JDBC學習筆記(一) 創建數據庫連接
JDBC代表Java與數據庫的連接,這對Java編程語言和廣泛的數據庫之間獨立於數據庫的連接標準的Java API。從根本上說,JDBC是一種規範,它提供的接口,一套完整的,可移植的訪問底層數據庫的程序。可以用Java來寫不同類型的可執行文件。
JDBC API支持兩層和三層處理模型進行數據庫訪問,但在一般的JDBC體系結構由兩層組成:
JDBC API: 提供了應用程序對JDBC的管理連接。JDBC Driver API: 支持JDBC管理到驅動器連接。JDBC API的使用驅動程序管理器和數據庫特定的驅動程序提供透明的連接到異構數據庫。JDBC驅動程序管理器可確保正確的驅動程序來訪問每個數據源。該驅動程序管理器能夠支持連接到多個異構數據庫的多個併發的驅動程序。
1.常見的JDBC組件
- DriverManager: 這個類管理數據庫驅動程序的列表。
- Driver: 此接口處理與數據庫服務器通信。
- Connection: 此接口與接觸數據庫的所有方法。
- Statement: 可以使用這個接口創建的對象的SQL語句提交到數據庫。
- ResultSet: 這些對象保存從數據庫後,執行使用
Statement
對象的SQL查詢中檢索數據。 - SQLException: 這個類用於處理髮生在數據庫應用程序中的任何錯誤。
2. JDBC連接數據庫步驟
- 準備數據庫連接的四個字符串(信息)
// 驅動的全類名和數據庫地址
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/select_test?useSSL=true";
// 登錄的用戶名和密碼
static final String USER = "root";
static final String PASS = "tyltyl";
- 註冊數據庫驅動
// 顯式註冊驅動 等價於DriverManager.registerDriver((Driver)Class.forName(driverClass).newInstance());
// 下面代碼存在一個靜態代碼塊調用了上面的,因此可以像下面一樣簡寫
Class.forName(JDBC_DRIVER);
- 通過DriverManager的getConnection方法獲取數據庫連接
Connection connection = DriverManager.getConnection(DB_URL, USER, PASS);
整合上面的步驟,可以利用Properties
文件寫出通用的獲取數據庫的連接類
public class GetConnection {
private String properties_name = null;
GetConnection(String properties_name){
this.properties_name = properties_name;
}
public Connection getConnection() throws Exception {
String driverClass = null;
String url = null;
String user = null;
String password = null;
// 讀取路徑下的properties文件
InputStream in = getClass().getClassLoader().getResourceAsStream(properties_name);
// 將屬性文件的值賦值給變量
Properties properties = new Properties();
properties.load(in);
driverClass = properties.getProperty("driver");
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
// 構建數據庫屬性
Properties info = new Properties();
info.put("user", user);
info.put("password", password);
info.put("useSSL", "true");
// 以下兩種方法都可以得到一個Connection
// 1.利用反射得到Driver的實例化
//Driver driver = (Driver)Class.forName(driverClass).newInstance();
//Connection connection = driver.connect(url, info);
// 2.利用DriverManager得到一個Connection
Class.forName(driverClass);
Connection connection = DriverManager.getConnection(url,info);
return connection;
}
}