• java dbhelper


    import javax.naming.spi.DirStateFactory;
    import java.lang.reflect.Field;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public   class DBHelper {
      //  private static final String DRIVER = "com.mysql.jdbc.Driver";
       // private static final String URL = "jdbc:mysql://101.12.102.10:3306/test";
        //private static final String USER = "root";
        //private static final String PASSWORD = "123456";
    
        private static final String DRIVER = "com.mysql.jdbc.Driver";
        private static final String URL = "jdbc:mysql://rm-2ze66k2qxc95j13nl.mysql.rds.aliyuncs.com:3306/longfor_mdm";
        private static final String USER = "wydb003_rw";
        private static final String PASSWORD = "vzXYZ5h3MiDntZDtuCFE";
    
        private static DBHelper ins;
    
        public static DBHelper ins() {
            if (ins == null) {
                ins = new DBHelper();
            }
            return ins;
        }
    
    
        /**
         * 连接数据库
         *
         * @return 链接数据库对象
         */
        public Connection getConnection() {
            Connection conn = null;
            try {
                Class.forName(DRIVER);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                conn = DriverManager.getConnection(URL, USER, PASSWORD);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return conn;
        }
    
        /**
         * 释放相应的资源
         *
         * @param rs
         * @param pstmt
         * @param conn
         */
        public void closeAll(ResultSet rs, PreparedStatement pstmt, Connection conn) {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (pstmt != null) {
                    pstmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        /**
         * 此方法可以完成增删改所有的操作
         *
         * @param sql
         * @param params
         * @return true or false
         */
        public boolean excuteUpdate(String sql, List<Object> params) {
            int res = 0;//受影响的行数
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            try {
                conn = getConnection();
                pstmt = conn.prepareStatement(sql);//装载sql语句
                if (params != null) {
                    //加入有?占位符,在执行之前把?占位符替换掉
                    for (int i = 0; i < params.size(); i++) {
                        pstmt.setObject(i + 1, params.get(i));
                    }
                }
                res = pstmt.executeUpdate();
    
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                closeAll(rs, pstmt, conn);
            }
            return res > 0 ? true : false;
        }
    
        /**
         * 使用泛型方法和反射机制进行封装
         *
         * @param sql
         * @param params
         * @param cls
         * @return
         */
        public <T> List<T> executeQuery(String sql, List<Object> params, Class<T> cls) throws Exception {
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            System.out.println("123");
    
            List<T> data = new ArrayList<T>();
            try {
                conn = getConnection();
                pstmt = conn.prepareStatement(sql);//装载sql语句
                if (params != null) {
                    //加入有?占位符,在执行之前把?占位符替换掉
                    for (int i = 0; i < params.size(); i++) {
                        pstmt.setObject(i + 1, params.get(i));
                    }
                }
                rs = pstmt.executeQuery();
                System.out.println("456");
    
                //把查询出来的记录封装成对应的实体类对象
                ResultSetMetaData rsd = rs.getMetaData();//获得列对象,通过此对象可以得到表的结构,包括,列名,列的个数,列的数据类型
                while (rs.next()) {
                    T m = cls.newInstance();
                    for (int i = 0; i < rsd.getColumnCount(); i++) {
                        String col_name = rsd.getColumnName(i + 1);//获得列名
                        Object value = rs.getObject(col_name);//获得列所对应的值
                        col_name=col_name.toLowerCase();
    
    
                        Field field = cls.getDeclaredField(col_name);
                        field.setAccessible(true);//给私有属性设置可访问权
                        field.set(m, value);//给对象的私有属性赋值
                    }
                    data.add(m);
                }
    
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                closeAll(rs, pstmt, conn);
            }
            return data;
        }
    
    
        public ResultSet executeQuerySql(String sql) {
            DirStateFactory.Result result = null;
            ResultSet rst = null;
            PreparedStatement pst = null;
            Connection con=this.getConnection();
            try {
    
                pst = this.getConnection().prepareStatement(sql);
    
                rst = pst.executeQuery();
    
    
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
            //    closeAll(rst, pst, con);
            }
            return rst;
        }
    }
    
  • 相关阅读:
    SharePoint 2010 User Profile Sync Service自动停止
    如何区别多个svchost.exe?
    Log Parser分析IIS log的一个简单例子
    Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
    Windows中右键点击文件夹, 结果找不到共享选项卡, 怎么办?
    介绍SOS中的SaveModule命令
    SharePoint中Draft版本的文档不会收到document added的Alert Email
    和我一起学Windows Workflow Foundation(1)创建和调试一个WF实例
    门户网站
    C#基础—— check、lock、using语句归纳
  • 原文地址:https://www.cnblogs.com/tiancai/p/13093798.html
Copyright © 2020-2023  润新知