zoukankan      html  css  js  c++  java
  • jdbc之工具类DBUtil的使用

      首先回顾一下jdbc的使用方法:

      1. 注册驱动

      2. 建立连接

      3. 建立statement

      4. 定义sql语句

      5. 执行sql语句,如果执行的是查询需遍历结果集

      6. 关闭连接

      其中建立连接和关闭连接都是可以封装成工具类的,因此给出DBUtil代码如下:

    package com.colin.util;
    
    import java.sql.*;
    
    public class DBUtil {
    
        private static final String DRIVER = "com.mysql.jdbc.Driver";
        private static final String URL = "jdbc:mysql://localhost:3306/testdb";
        private static final String USERNAME = "root";
        private static final String PASSWORD = "Danny2036";
    
        /**
         * 获取连接的公共方法
         * @return
         */
        public static Connection getConnection() {
    
            try {
                Class.forName(DRIVER);
                return DriverManager.getConnection(URL, USERNAME, PASSWORD);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
    
        }
    
        /**
         * 关闭Connection
         * @param connection
         */
        public static void closeConnection(Connection connection) {
            try {
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 关闭Statement
         * @param statement
         */
        public static void closeStatement(Statement statement) {
            try {
                if (statement != null) {
                    statement.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 关闭ResultSet
         * @param resultSet
         */
        public static void closeresultset(ResultSet resultSet) {
            try {
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 关闭ResultSet, Statement, Connection
         * @param closeables
         */
        public static void closeAll(AutoCloseable... closeables) {
            for(AutoCloseable autoCloseable : closeables) {
                try {
                    if (autoCloseable != null) {
                        autoCloseable.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
    }

      这里解释下最后一个方法closeAll()。关闭连接需要关闭哪些内容呢?一般情况下,有Connection和Statement,如果执行查询返回了结果集,还有ResultSet。关闭的顺序应该和打开的顺序相反(如,打开的顺序是Connection,Statement,关闭的顺序就应该是Statement,Connection)。如果分别写三个close方法,很明显代码不够精炼。因此,我们只用一个方法来关闭所有的连接。

      通过查看源码可以知道,Connection,Statement,ResultSet都继承了AutoCloseable这个接口,因此closeAll()方法采用AutoCloseable类型的可变参数,传入的三个值按顺序依次是ResultSet(如果有),Statement,Connection。给出如下一个例子。

    DBUtil.closeAll(resultSet, preparedStatement, connection);

      大功告成。

  • 相关阅读:
    在Xcode5中修改整个项目名
    EFCore的事务和分布式事务的使用
    NET CORE API权限控制之JWT的创建和引用
    NET CORE引用log4net日志文件的应用
    NET CORE在Linux下部署并且用Nginx 做负载均衡(主要说明CentOS)
    Centos 7下安装nginx,使用yum install nginx,提示没有可用的软件包
    Laravel Packages
    Laravel artisan commands
    ExtJs xtype
    ExtJS Complex data binding
  • 原文地址:https://www.cnblogs.com/AlleyMeowy/p/10205124.html
Copyright © 2011-2022 走看看