1. 程式人生 > >dljd_011_jdbc再次封裝工具類_把數據庫的相關信息寫到配置文件中,減低代碼的耦合度

dljd_011_jdbc再次封裝工具類_把數據庫的相關信息寫到配置文件中,減低代碼的耦合度

man 數據庫工具類 () version 數據庫配置 測試 loader connect not

一、將連接數據庫所需的相關信息寫入到配置文件、通過讀取配置文件來獲取數據庫的相關信息

package edu.aeon.aeonutils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/** * [說明]:jdbc工具類 * 封裝了jdbc裏面的重復步驟:數據庫的連接和數據庫資源的釋放 * @author aeon * @version 1.2(該版本將連接數據庫的各種數據庫配置信息(用戶名、密碼、驅動及url)單獨提取到配置文件中) */ public class AeonJdbcUtils { private static String username; private static String password; private static String driverClass; private static
String url; /** * 靜態代碼塊處理讀取之前的數據 */ static{ InputStream inputStream = AeonJdbcUtils.class.getClassLoader().getResourceAsStream("config/database/database.properties"); Properties properties=new Properties(); try { properties.load(inputStream); username
= properties.getProperty("username"); password = properties.getProperty("password"); driverClass = properties.getProperty("driverClass"); url = properties.getProperty("url"); } catch (IOException e) { System.out.println("初始化讀取數據庫配置文件--->database.properties失敗!"); e.printStackTrace(); } } /** * 連接數據庫 * @return 數據庫連接對象 * @throws ClassNotFoundException * @throws SQLException */ public static Connection getMySqlConnection() throws ClassNotFoundException, SQLException{ Class.forName(driverClass); return DriverManager.getConnection(url, username, password); } /** * 釋放數據庫資源 * @param resultSet 結果集 * @param statement 執行sql語句的對象 * @param connection 數據庫連接對象 */ public static void closeDB(ResultSet resultSet,Statement statement,Connection connection){ if(null!=resultSet){ try { resultSet.close(); } catch (SQLException e) { System.out.println("釋放數據庫資源失敗!--->resultSet"); e.printStackTrace(); } } if(null!=statement){ try { statement.close(); } catch (SQLException e) { System.out.println("釋放數據庫資源失敗!--->statement"); e.printStackTrace(); } } if(null!=connection){ try { connection.close(); } catch (SQLException e) { System.out.println("釋放數據庫資源失敗!--->connection"); e.printStackTrace(); } } } }

測試代碼:  

package edu.aeon.aeonutils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * [說明]:測試連接數據庫工具類(version 1.2)
 * @author aeon
 *
 */
public class TestAeonJdbcUtils {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            connection = AeonJdbcUtils.getMySqlConnection();
            statement = connection.createStatement();
            String sql = "select * from user";
            resultSet = statement.executeQuery(sql);
            System.out.println("用戶id\t用戶名\t用戶密碼");
            while (resultSet.next()) {
                int userId = resultSet.getInt("userId");// 根據表字段名獲取該行記錄上的字段名所對應的字段值
                String userName = resultSet.getString("userName");
                String userPw = resultSet.getString("userpw");// 數據庫中的字段不區分大小寫
                System.out.println(userId + "\t" + userName + "\t" + userPw);
            }
        } catch (ClassNotFoundException e) {
            System.out.println("加載驅動失敗!");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("連接數據庫失敗!");
            e.printStackTrace();
        }
        AeonJdbcUtils.closeDB(resultSet, statement, connection);
    }
}

database.properties中的配置信息:  

 username=root
 password=root
 driverClass=com.mysql.jdbc.Driver
 url=jdbc:mysql://localhost:3306/db_test

項目包視圖截圖如下:

  技術分享圖片

建庫及表語句:  

drop database db_test;
create database db_test;
use db_test;
create table user(
    userId int(5) primary key comment 用戶id,
    userName varchar(16) comment 用戶姓名,
    userPw varchar(16) comment 用戶密碼
);
insert into user(userId,userName,userPw) values(10001,user1,user1);
insert into user(userId,userName,userPw) values(10002,user2,user2);
insert into user(userId,userName,userPw) values(10003,user3,user3);
insert into user(userId,userName,userPw) values(10004,user4,user4);
insert into user(userId,userName,userPw) values(10005,user5,user5);

數據庫信息截圖:  

  技術分享圖片

測試結果截圖:

技術分享圖片

  

dljd_011_jdbc再次封裝工具類_把數據庫的相關信息寫到配置文件中,減低代碼的耦合度