dljd_011_jdbc再次封裝工具類_把數據庫的相關信息寫到配置文件中,減低代碼的耦合度
阿新 • • 發佈:2018-12-05
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 staticString 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再次封裝工具類_把數據庫的相關信息寫到配置文件中,減低代碼的耦合度