zoukankan      html  css  js  c++  java
  • java基础之JDBC三:简单工具类的提取及应用

    简单工具类:

    public class JDBCSimpleUtils {
        /**
         * 私有构造方法
         */
        private JDBCSimpleUtils() {
        }
    
        /**
         * 驱动
         */
        public static String driver = null;
        /**
         * 连接字符串
         */
        public static String url = null;
        /**
         * 用户名
         */
        public static String user = null;
        /**
         * 密码
         */
        public static String password = null;
    
        /**
         * 读取配置文件, 并将读取到的值赋值给变量.
         */
        public static void readConfig() {
            try {
                //读取properties配置文件给变量赋值
                Properties pp = new Properties();
                pp.load(new FileReader("day04_classTest\src\config.properties"));
                url = pp.getProperty("url");
                user = pp.getProperty("username");
                driver = pp.getProperty("driver");
                password = pp.getProperty("password");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 静态代码块
         * 变量赋值
         * 并注册驱动
         */
        static {
            try {
                //变量赋值
                readConfig();
                //注册驱动
                Class.forName(driver);
            } catch (Exception e) {
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
                e.printStackTrace();
            }
        }
    
        /**
         * 获取Connection
         *
         * @return 数据库连接
         */
        public static Connection getConnection() {
    
            try {
                return DriverManager.getConnection(url, user, password);
            } catch (SQLException ex) {
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
                ex.printStackTrace();
                return null;
            }
        }
    
        public static Statement getStatement(Connection conn) {
            if (conn == null) {
                return null;
            }
            try {
                return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                        ResultSet.CONCUR_UPDATABLE);
                // 设置数据集可以滚动,可以更新
            } catch (SQLException ex) {
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
                release(conn);
            }
            return null;
        }
    
        /**
         * 获取一个带参数的 PreparedStatement
         * 该 PreparedStatement 已经设置数据集 可以滚动,可以更新
         *
         * @param conn      数据库连接
         * @param cmdText   需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static PreparedStatement getPreparedStatement(Connection conn, String cmdText, Object... cmdParams) {
            if (conn == null) {
                return null;
            }
            PreparedStatement pstmt = null;
            try {
                pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                int i = 1;
                for (Object item : cmdParams) {
                    pstmt.setObject(i, item);
                    i++;
                }
            } catch (SQLException e) {
                e.printStackTrace();
                release(conn, pstmt);
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
            }
            return pstmt;
        }
    
    
        /**
         * 释放资源
         *
         * @param conn Connection
         * @param stat Statement
         * @param rs   ResultSet
         */
        public static void release(Connection conn, Statement stat, ResultSet rs) {
            try {
                if (rs != null) {
                    rs.close();
                    rs = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
            } finally {
                try {
                    if (stat != null) {
                        stat.close();
                        stat = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                    //写入日志
                    //Logger.WriteLog(JDBCUtils.class.getName(),"");
                } finally {
                    try {
                        if (conn != null) {
                            conn.close();
                            conn = null;
                        }
                    } catch (SQLException e) {
                        e.printStackTrace();
                        //写入日志
                        //Logger.WriteLog(JDBCUtils.class.getName(),"");
                    }
                }
            }
        }
    
        /**
         * 释放资源
         *
         * @param conn Connection
         * @param stat Statement
         */
        public static void release(Connection conn, Statement stat) {
            try {
                if (stat != null) {
                    stat.close();
                    stat = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
            } finally {
                try {
                    if (conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                    //写入日志
                    //Logger.WriteLog(JDBCUtils.class.getName(),"");
                }
            }
        }
    
        /**
         * 释放资源
         *
         * @param conn Connection
         */
        public static void release(Connection conn) {
            try {
                if (conn != null) {
                    conn.close();
                    conn = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
                //写入日志
                //Logger.WriteLog(JDBCUtils.class.getName(),"");
            }
        }
    }

    简单工具类的应用:

        /**
         * 增删改的方法
         *
         * @param sql
         * @param obj
         */
        private static void executeNoQuery(String sql, Object... obj) {
            //获取Connection
            Connection conn = JDBCSimpleUtils.getConnection();
            //获取PreparedStatement
            PreparedStatement ps = JDBCSimpleUtils.getPreparedStatement(conn, sql, obj);
            try {
                int i = ps.executeUpdate();
                if (i > 0) {
                    System.out.println("ok");
                } else {
                    System.out.println("error");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                JDBCSimpleUtils.release(conn, ps);
            }
        }
    
    
        /**
         * 查询返回ResultSet
         *
         * @param sql
         */
        private static void getResultSet(String sql) {
            //获取Connection
            Connection conn = JDBCSimpleUtils.getConnection();
            //获取Statement
            Statement stat = JDBCSimpleUtils.getStatement(conn);
            ResultSet rs = null;
            try {
                rs = stat.executeQuery(sql);
                while (rs.next()) {
                    int id = rs.getInt("uid");
                    String name = rs.getString("uname");
                    String psw = rs.getString("psw");
                    System.out.println(id + "--" + name + "--" + psw);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                JDBCSimpleUtils.release(conn, stat, rs);
            }
        }
  • 相关阅读:
    sklearn中决策树算法DesiciontTreeClassifier()调用以及sklearn自带的数据包sklearn.datasets.load_iris()的应用
    python 中feedParser
    Python中解码decode()与编码encode()与错误处理UnicodeDecodeError: 'gbk' codec can't decode byte 0xab
    Python中的排序方法sort(),sorted(),argsort()等
    Python 关于数组矩阵变换函数numpy.nonzero(),numpy.multiply()用法
    Python中where()函数的用法
    矩阵乘法np.dot()及np.multiply()以及*
    Python打开文件open()的注意事项
    给 Chrome浏览器 添加 Javascript小书签,查看当前页面全部加载的javascript文件及代码片段
    pycharm快捷键及中文说明【使用翻译工具一条一条翻译】
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/9168896.html
Copyright © 2011-2022 走看看