package com.hrs.util;

import java.sql.*;

/**   
* Copyright: Copyright (c) 2026 chinasofti
* 
* @ClassName: DBUtil.java
* @Description: 数据库连接工具类
*
* @version: v1.0.0
* @author: 董济硕
* @date: 2026年4月13日 上午10:08:25 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2026年4月13日     董济硕           v1.0.0               新建文件
*/
public class DBUtil {
    
    // 数据库配置信息
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost:3306/hrs?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
    private static final String USERNAME = "root";      // MySQL用户名
    private static final String PASSWORD = "root";    // MySQL密码
    /**
     * 
    * @Function: <clinit>
    * @Description: 静态代码块：加载数据库驱动
    *
    * @param: 无
    * @return：无
    * @throws：ClassNotFoundException
    *
    * @version: v1.0.0
    * @author: 董济硕
    * @date: 2025年4月6日 上午10:11:25 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月6日     董济硕        			v1.0.0                             新建方法
     */
    static {
        try {
            Class.forName(DRIVER);
            System.out.println("✅ MySQL驱动加载成功！");
        } catch (ClassNotFoundException e) {
            System.out.println("❌ MySQL驱动加载失败！");
            e.printStackTrace();
        }
    }

    /**
     * 
    * @Function: getConnection
    * @Description: 获取数据库连接
    *
    * @param: 无
    * @return：Connection 数据库连接对象
    * @throws：SQLException
    *
    * @version: v1.0.0
    * @author: 董济硕
    * @date: 2025年4月6日 上午10:14:58 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月6日     董济硕           			v1.0.0                             新建方法
     */    
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }
    /**
     * 
    * @Function: close
    * @Description: 关闭连接（查询用）
    *
    * @param: ResultSet 结果集, PreparedStatement 预编译语句, Connection 数据库连接
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author:  董济硕
    * @date: 2025年4月6日 上午10:19:21 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月6日      董济硕           			v1.0.0                             新建方法
     */

    public static void close(ResultSet rs, PreparedStatement pstmt, Connection conn) {
        if (rs != null) {
            try { rs.close(); } catch (SQLException e) { e.printStackTrace(); }
        }
        close(pstmt, conn);
    }
    /**
     * 
    * @Function: close
    * @Description: 关闭连接（增删改用）
    *
    * @param: PreparedStatement 预编译语句, Connection 数据库连接
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author:  董济硕
    * @date: 2025年4月6日 上午10:50:58 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月6日      董济硕           			v1.0.0                             新建方法
     */
    public static void close(PreparedStatement pstmt, Connection conn) {
        if (pstmt != null) {
            try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); }
        }
        if (conn != null) {
            try { conn.close(); } catch (SQLException e) { e.printStackTrace(); }
        }
    }
    /**
     * 
    * @Function: main
    * @Description: 测试数据库连接
    *
    * @param: String[] 命令行参数
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 董济硕
    * @date: 2025年4月6日 上午10:55:14 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月6日     董济硕           			v1.0.0                             新建方法
     */    
    public static void main(String[] args) {
        Connection conn = null;
        try {
            conn = DBUtil.getConnection();
            System.out.println("✅ 数据库连接成功！");
            System.out.println("连接对象：" + conn);
        } catch (SQLException e) {
            System.out.println("❌ 数据库连接失败！");
            e.printStackTrace();
        } finally {
            close(null, null, conn);
        }
    }
}