• JDBC工具类:JDBCUtils


    1. 目的

      每次使用JDBC的时候都要书写冗长的代码段,不符合复用的理念,于是要单独写一个类,将通用的JDBC操作写到一个类中,便于重复使用和精简代码。

    2. 步骤

      (1)注册驱动并获取连接

        为了最大精简获取连接的简化性和通用性,这里需要使用到配置文件 jdbc.properties 解决。

        1) 创建一个文件,放到项目中,要更换别的连接时,只需修改配置文件即可,无需修改类文件和重新编译。

        driver=数据库驱动路径
        url=url连接字符串
        user=用户名
        password=密码

        2) 然后就需要将配置文件中键值对中的值取出,并注册了驱动。因为驱动和取出配置文件只需要一次就可以,所以就写入到静态代码块中,在程序运行的开始就处理好了,无需以后再冗余执行。

    // 定义静态变量,使用静态代码获取配置文件的值
        private static String url;
        private static String user;
        private static String password;
        private static String driver;
        // 使用静态代码注册驱动并给静态变量赋值
        static{
            try {
                // 创建Properties集合类
                Properties pro = new Properties();
                // 获取src路径下文件,使用ClassLoader类加载器
                ClassLoader classLoader = JDBCUtils.class.getClassLoader();
                // URL定位了文件的绝对路径
                URL res = classLoader.getResource("jdbc.properties");
                // 获取字符串路径
                String path = res.getPath();
                // 读取文件
                pro.load(new FileReader(path));
                // 给静态变量赋值
                url = pro.getProperty("url");
                user = pro.getProperty("user");
                password = pro.getProperty("password");
                driver = pro.getProperty("driver");
                // 注册驱动
                Class.forName(driver);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }

        3) 获取连接

    public static Connection getConnection() throws SQLException {
            return DriverManager.getConnection(url, user, password);
    }

      (2)释放资源

        因为有的sql语句需要用结果集对象,所以使用两个重载方法释放资源。

    /**
         * @Author ZhaoPeiXuan
         * @Description 释放资源
         * @Date 22:08 2019/9/16
         * @Param [stmt 执行sql的对象, conn 数据库连接对象]
         * @return void
         **/
        public static void close(Statement stmt, Connection conn){
            if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
    
        /**
         * @Author ZhaoPeiXuan
         * @Description 释放资源Pro版
         * @Date 22:13 2019/9/16
         * @Param [rs 结果集对象, stmt 执行sql的对象, conn 数据库连接对象]
         * @return void
         **/
        public static void close(ResultSet rs, Statement stmt, Connection conn){
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
            if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    3. 简化后的代码

      Connection conn = null;
      Statement stmt = null;
      ResultSet rs = null;
      try {
        conn = JDBCUtils.getConnection();
        String sql = "SQL语句";
        stmt = conn.createStatement();
        rs = stmt.executeQuery(sql);
      } catch (SQLException e) {
        e.printStackTrace();
      } finally {
        JDBCUtils.close(rs, stmt, conn);
      }    
  • 相关阅读:
    [P4721] 【模板】分治 FFT
    [GYM102452E] Erasing Numbers
    [LOJ6220] sum
    [CF776B] Sherlock and His Girlfriend
    [LOJ6087] 毒瘤题
    [LOJ2612] 花匠
    [LOJ529] 自然语言
    [CTSC2017] 吉夫特
    [LOJ6671] EntropyIncreaser 与 Minecraft
    [LOJ3196] 挂架
  • 原文地址:https://www.cnblogs.com/NyanKoSenSei/p/11530900.html
Copyright © 2020-2023  润新知