欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

实现JDBC自动加载驱动,简化数据连接和关闭数据库连接

程序员文章站 2022-04-14 23:30:23
package util; import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.sql.*;import java.util.Properties; /** * 较为繁琐并 ......

package util;

import java.io.file;
import java.io.fileinputstream;
import java.io.ioexception;
import java.sql.*;
import java.util.properties;

/**
* 较为繁琐并且存在【通用性代码】
* 1. 数据库连接的过程
* 驱动加载,必要参数和获取数据库连接
* 2. 数据库操作使用的资源关闭问题
* <p>
* jdbcutil这个工具类能够给我们提供什么便利
* 1. 自动加载驱动,预处理所有的必要参数
* 2. 简化获取数据库连接的方法,改为getconnection();
* 3. 简化关闭数据库连接使用的资源,改为统一的close方法
* 4. 所有的方法都是通过类名直接调用,摆脱类对象约束,使用static修饰的静态成员方法
*
* @author anonymous
*/
public class jdbcutil {

// 数据库连接所需的必要条件
private static string url = null;
private static string user = null;
private static string password = null;

// 使用静态代码块完成自动加载,辅助程序运行的必要参数
static {
try {
// 1. 准备当前db.properties输入字节流对象
fileinputstream fis = new fileinputstream(new file("./src/db.properties"));

// 2. 获取一个properties类对象
properties properties = new properties();

// 3. 使用load方法,获取db.properties文件内容到properties类对象
properties.load(fis);

// 4. 通过properties类对象,获取对应的属性
url = properties.getproperty("url");
user = properties.getproperty("user");
password = properties.getproperty("password");

class.forname(properties.getproperty("driverclass"));
} catch (ioexception | classnotfoundexception e) {
e.printstacktrace();
}
}

/**
* 静态成员方法,获取对应数据库的java.sql.connection连接对象
*
* @return java.sql.connection 数据库连接对象,如果发生意外返回null
*/
public static connection getconnection() {
connection connection = null;

try {
connection = drivermanager.getconnection(url, user, password);
} catch (sqlexception e) {
e.printstacktrace();
}

return connection;
}

/**
* 关闭数据库connection连接对象
*
* @param connection java.sql.connection 数据库连接对象
*/
public static void close(connection connection) {
close(connection, null, null);
}

/**
* 关闭数据库connection连接对象,以及statement数据库sql语句搬运工对象
*
* @param connection java.sql.connection 数据库连接对象
* @param statement java.sql.statement 数据库sql语句搬运工对象
*/
public static void close(connection connection, statement statement) {
close(connection, statement, null);
}

/**
* 关闭数据库connection连接对象,statement数据库sql语句搬运工对象以及查询结果集对象resultset
*
* @param connection java.sql.connection 数据库连接对象
* @param statement java.sql.statement 数据库sql语句搬运工对象
* @param resultset java.sql.resultset 查询结果集类对象
*/
public static void close(connection connection, statement statement, resultset resultset) {
try {

if (resultset != null) {
resultset.close();
}

if (statement != null) {
statement.close();
}

if (connection != null) {
connection.close();
}
} catch (sqlexception e) {
e.printstacktrace();
}
}
}