首先回顾一下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);

  大功告成。

jdbc之工具类DBUtil的使用的更多相关文章

  1. JDBC 实例--JDBC通过工具类DBUtil连接到数据库,让我们不再恐惧操作数据库

    利用JDBC连接到数据库一般需要几个步骤: 1.装载驱动程序. 2.建立连接. 3.发送和执行SQL语句. 4.释放资源 首先建立一个数据库: 脚本如下: create database csdn; ...

  2. 【JDBC】工具类的抽取

    jdbc.properties属性文件 driverClass=com.mysql.jdbc.Driver url=jdbc:mysql:///jdbctest username=root passw ...

  3. 一、工具类DBUtil——数据库连接

    这个工具类完成的工作如下: 1.第一个static方法,完成数据库初始化的工作 2.第二个static方法,完成与数据库建立连接的工作. package util; import java.sql.C ...

  4. 20160406javaweb JDBC 实例工具类

    一.建立静态的数据库配置文件: config.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/datab ...

  5. jdbc连接数据库工具类

    import java.lang.reflect.Field; import java.sql.Connection; import java.sql.DriverManager; import ja ...

  6. 创建Jdbc封装工具类

    jdbc.propertie url=jdbc:mysql:///empye user=root password=root driver=com.mysql.jdbc.Driver 读取资源文件  ...

  7. JDBC实例--工具类升级,使用Apache DBCP连接池重构DBUtility,让连接数据库更有效,更安全

    直接使用JDBC访问数据库时,需要避免以下隐患: 1. 每一次数据操作请求都需要建立数据库连接.打开连接.存取数据和关闭连接等步骤.而建立和打开数据库连接是一件既耗资源又费时的过程,如果频繁发生这种数 ...

  8. JDBC——抽取工具类

    目的:简化书写 分析: 1.注册驱动 2.获取连接对象 3.释放资源 1.注册驱动 2.获取连接对象 需求:不想传递参数,还能保证工具类的通用性解决方案:配置文件 jdbc.properties ur ...

  9. JDBC编程工具类 Dbconnection

    JDBC基础:https://blog.csdn.net/weixin_44893902/article/details/106746880 Dbconnection工具类(包含了连接,增删改查,关闭 ...

随机推荐

  1. ul的margin撑不开想要的距离的办法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Js中Map对象的使用

    Js中Map对象的使用 1.定义 键/值对的集合. 2.语法 mapObj = new Map() 3.备注 集合中的键和值可以是任何类型.如果使用现有密钥向集合添加值,则新值会替换旧值. 4.属性 ...

  3. iOS拼音搜索,拼音首字母搜索

    扩展了一下 搜索框,能够实现拼音和首字母模糊搜索 基本搜索 上一篇文章 #import "NSString+utility.h" @interface WJWPinyinSearc ...

  4. Multi-Projector Based Display Code ---- Calibration

    Overview As mentioned previously, there are two main steps in generating a seamless display. The fir ...

  5. 2PC/3PC/Paxos

    在分布式系统中,一个事务可能涉及到集群中的多个节点.单个节点很容易知道自己执行的事务成功还是失败,但因为网络不可靠难以了解其它节点的执行状态(可能事务执行成功但网络访问超时). 若部分节点事务执行失败 ...

  6. 隐藏input光标和输入内容方法

    text-indent: -999em; // 隐藏input文字margin-left: -100%;// 隐藏input光标

  7. C语言中负数的存储方式

    详细介绍负数的文章: https://blog.csdn.net/daiyutage/article/details/8575248 1.以char类型举例,其取值范围是 -128 ~ 127,即-2 ...

  8. MySQL中0、'0'作为条件时的区别

    一.现象: 今天查询时,某字段x为varchar 可能的值为A B C 0 1 2 3 4 想把0 1 2 3 4的所有数据查出,使用的SQL为 select * from table where x ...

  9. 魅族资深DBA:利用MHA构建MySQL高可用平台

    龙启东 魅族资深DBA 负责MySQL.Redis.MongoDB以及自动化平台建设 .擅长MySQL高可用方案.SQL性能优化.故障诊断等. 本次分享主要包括以下几方面: 如何利用MHA 改造MHA ...

  10. 浅析对spring中IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...