1. 程式人生 > >【資料庫筆記】編寫JDBC的工具類

【資料庫筆記】編寫JDBC的工具類

註冊驅動和資料庫連線是固定操作,何不將這些固定操作封裝成一個類,並且提供靜態方法返回資料庫連線物件,達到程式碼的重複利用:

/*
 * JDBC的工具類
  * 用於註冊驅動,連線資料庫
 */

import java.sql.Connection;
import java.sql.DriverManager;

public class JDBCUtils {
	private JDBCUtils() {
	}

	private static Connection con;
	/*
	 * 靜態程式碼塊用於初始化類,為類的屬性初始化,每個靜態程式碼塊只會執行一次。
	 *  由於JVM在載入類時會執行靜態程式碼塊,所以靜態程式碼塊先於主方法執行。
	 */
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");//註冊驅動
			String url = "jdbc:mysql://localhost:3306/mydatabase";
			String user = "root";
			String password = "yuweijun";
			con = DriverManager.getConnection(url, user, password);
		} catch (Exception ex) {
			throw new RuntimeException(ex + "資料庫連線失敗!");
		}
	}

	/*
	 * 定義靜態方法,返回資料庫連線物件
	 */
	public static Connection getConnection() {
		return con;
	}
}

但是由於我們要考慮程式碼的封裝性,當我們更換資料庫時不應該去改動原始碼,此時我們應該建立配置檔案,配置檔案中以鍵值對的形式寫入我們的資訊,然後在工具類中載入配置檔案,用配置檔案資訊去連線資料庫:

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

/*
 * JDBC工具類
 * 讀取配置檔案註冊驅動和連線資料庫
 */

public class JDBCUtilsConfig {
	//私有化構造方法,使類不能被例項化
	private JDBCUtilsConfig() {}
	private static Connection con;
	static {
		try {
			FileInputStream fis = new FileInputStream("src\\MyDataBase.properties");
			Properties pro = new Properties();
			pro.load(fis);
			// 通過鍵獲取值
			String calss = pro.getProperty("dirverClass");
			String url = pro.getProperty("url");
			String username = pro.getProperty("username");
			String password = pro.getProperty("password");
			// 註冊驅動
			Class.forName(calss);
			// 連線資料庫
			con = DriverManager.getConnection(url, username, password);
		} catch (Exception ex) {
			throw new RuntimeException(ex + "資料庫連線失敗!");
		}
	}

	// 返回資料庫連線物件
	public static Connection getConnection() {
		return con;
	}
}

測試類:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import JDBCUtils.JDBCUtils;
import JDBCUtils.JDBCUtilsConfig;

public class Test {
	public static void main(String[] args) throws SQLException {
		// 呼叫JDBC工具類,獲得資料庫連線物件
		// Connection con=JDBCUtils.getConnection();
		Connection con = JDBCUtilsConfig.getConnection();
		// 查詢賬務的全部資訊
		String sql = "select * from zhangwu";
		// 獲得SQL語句執行物件,並執行預編譯
		PreparedStatement ps = con.prepareStatement(sql);
		// 執行查詢語言,獲得結果集
		ResultSet rs = ps.executeQuery();
		while (rs.next()) {
			System.out.println(rs.getInt("id") + "   " + rs.getString("zname") + "   " + rs.getInt("money"));
		}
	}
}

後面我們可以往工具類中實現更多功能,比如增刪改查等等,方便我們的使用。