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());
    }
}

}

posted @ 2025-11-03 16:50  Cx330。  阅读(4)  评论(0)    收藏  举报