实现JDBC自动加载驱动,简化数据连接和关闭数据库连接
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();
}
}
}