10.31总结
package com.bean;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DBConnection {
// 1. 定义Properties对象,用于读取配置文件
private static Properties props = new Properties();
// 2. 静态代码块:程序启动时执行一次,加载配置文件和数据库驱动
static {
try {
// 读取配置文件:通过类加载器获取config/db.properties的输入流
InputStream in = DBConnection.class.getClassLoader().getResourceAsStream("config/db.properties");
props.load(in); // 加载输入流到Properties对象,解析配置参数
// 加载数据库驱动:通过反射加载驱动类(驱动类名从配置文件读取)
Class.forName(props.getProperty("db.driver"));
} catch (ClassNotFoundException e) {
// 驱动类未找到(通常是jar包未导入或驱动类名错误)
System.err.println("数据库驱动加载失败!" + e.getMessage());
} catch (IOException e) {
// 配置文件读取失败(通常是配置文件路径错误)
System.err.println("数据库配置文件读取失败!" + e.getMessage());
}
}
// 3. 静态方法:获取数据库连接(供其他层调用)
public static Connection getConnection() throws SQLException {
// 通过DriverManager获取连接,参数从配置文件读取
return DriverManager.getConnection(
props.getProperty("db.url"), // 数据库URL
props.getProperty("db.username"), // 用户名
props.getProperty("db.password") // 密码
);
}
// 4. 静态方法:关闭数据库资源(ResultSet+PreparedStatement+Connection)
public static void close(ResultSet rs, PreparedStatement pstmt, Connection conn) {
try {
// 关闭结果集(若存在)
if (rs != null) rs.close();
// 关闭SQL执行对象(若存在)
if (pstmt != null) pstmt.close();
// 关闭连接(若存在且未关闭)
if (conn != null && !conn.isClosed()) conn.close();
} catch (SQLException e) {
System.err.println("数据库资源关闭失败!" + e.getMessage());
}
}
}

浙公网安备 33010602011771号