JavaWeb通過JDBC連線MySQL資料庫
一、JDBC簡介
JDBC是Java DataBase Connectivity(Java資料庫連線)的簡寫,它是一套用於執行SQL語句的Java API,它由一組用Java語言編寫的類和介面組成,是Java程式訪問資料庫的標準規範。
通過JDBC提供的API,應用程式可以連線到資料庫,並使用SQL語句完成對資料庫中資料的插入、刪除、更新、查詢等操作。
有了JDBC,開發人員無需為訪問不同的資料庫而編寫不同的應用程式,只需使用JDBC編寫一個通用程式即可。
應用程式在使用JDBC訪問特定的資料庫時,需要與不同的資料庫驅動進行連線。
JDBC提供介面,而驅動是介面的實現,沒有驅動將無法完成資料庫連線。
每個資料庫提供商都需要提供自己的驅動,用來連線本公司的資料庫。
1、JDBC的體系結構
JDBC的體系結構由三層組成,具體如下:
- JDBC API:面向程式,供Java程式開發人員使用。
- JDBC Driver Manager:註冊資料庫驅動,供Java程式開發人員使用。
- JDBC Driver API:面向資料庫,供資料庫廠商使用。
其中,JDBC API通過Driver Manager(驅動管理器)實現與資料庫的透明連線,提供獲取資料庫連線、執行SQL語句、獲得結果等功能。JDBC API使開發人員獲得了標準的、純Java的資料庫程式設計介面,為在Java程式中訪問任意型別的資料庫提供支援。
JDBC Driver Manager(驅動管理器)為應用程式裝載資料庫驅動,確保使用正確的驅動來訪問每個資料來源。JDBC Driver Manager的一個特色功能是,它能夠支援連線到多個異構資料庫的多個併發驅動程式。
JDBC Driver API提供了資料庫廠商編寫驅動程式時必須實現的介面。
JDBC擴充套件了Java的能力,它可以讓開發人員在開發資料庫程式時真正實現"一次編寫,處處執行",例如,企業可以通過JDBC程式讓使用不同作業系統的員工在網際網路上連線到幾個全球資料庫上,而這幾個全球資料庫可以是不相同的。
2、JDBC的常用API
JDBC定義了一系列操作資料庫的介面和類,這些介面和類位於java.sql包中。
1. Driver介面
Driver介面是所有JDBC驅動程式必須要實現的介面,該介面提供給資料庫廠商使用。
在編寫JDBC程式時,必須先裝載特定資料庫廠商的驅動程式,裝載驅動程式通過java.lang.Class類中的靜態方法forName()實現。
2. DriverManager類
DriverManager類用於載入JDBC驅動並建立與資料庫的連線,DriverManager類的常用方法:
方法名稱 |
功能描述 |
registerDriver(Driver driver) |
註冊資料庫的驅動程式 |
getConnection (String url,String user,String password) |
獲取資料庫連線 |
3.Connection介面
Connection介面表示Java程式和資料庫的連線,Java程式和資料庫的互動是通過Connection介面來完成的。Connection介面的常用方法:
方法名稱 |
功能描述 |
createStatement() |
建立向資料庫傳送sql的Statement物件 |
prepareStatement(String sql) |
建立向資料庫傳送預編譯sql的PrepareSatement物件 |
prepareCall(String sql) |
建立執行儲存過程的CallableStatement物件 |
4.Statement介面
Statement介面用於向資料庫傳送SQL語句,Statement介面提供了三個執行SQL語句的方法:
方法名稱 |
功能描述 |
execute(String sql) |
執行語句,返回是否有結果集 |
executeQuery(String sql) |
執行select語句,返回ResultSet結果集 |
executeUpdate(String sql) |
執行insert/update/delete操作,返回更新的行數 |
5. PreparedStatement介面
繼承自Statement介面,用於執行預編譯的SQL語句,PreparedStatement介面提供了一些對資料庫進行基本操作的方法:
方法名稱 |
功能描述 |
executeQuery() |
執行select語句,返回ResultSet結果集 |
executeUpdate() |
執行insert/update/delete操作,返回更新的行數 |
addBatch() |
把多條sql語句放到一個批處理中 |
executeBatch() |
向資料庫傳送一批sql語句執行 |
6. CallableStatement介面
繼承自PreparedStatement介面,由方法prepareCall()建立,用於呼叫SQL儲存過程。CallableStatement介面提供了一些對資料庫進行基本操作的方法:
方法名稱 |
功能描述 |
wasNull() |
查詢最後一個讀取的OUT引數是否為SQL型別的Null值 |
setNull(String parameterName,int sqlType) |
將指定引數設定為SQL型別的NULL |
getInt(int parameterIndex ) |
以Java語言中int值的形式獲取資料庫中Integer型別引數的值 |
setString(String parameterName,String x) |
將指定引數設定為給定的Java型別的String值 |
registerOutParameter(int parameterIndex, int sqlType) |
按順序位置parameterIndex將OUT引數註冊為SQL型別 |
7. ResultSet介面
ResultSet介面表示執行select查詢語句獲得的結果集,該結果集採用邏輯表格的形式封裝。ResultSet介面中提供了一系列操作結果集的方法:
方法名稱 |
功能描述 |
getString(int index)、getString(String columnName) |
獲得在資料庫裡是varchar、char等型別的資料物件 |
getFloat(int index)、getFloat(String columnName) |
獲得在資料庫裡是Float型別的資料物件 |
getDate(int index)、getDate(String columnName) |
獲得在資料庫裡是Date型別的資料 |
getBoolean(int index) 、getBoolean(String columnName) |
獲得在資料庫裡是Boolean型別的資料 |
getObject(int index)、getObject(String columnName) |
向資料庫傳送一批sql語句執行 |
next() |
移動到下一行 |
previous() |
移動到前一行 |
absolute(int row) |
移動到指定行 |
beforeFirst() |
移動resultSet的最前面 |
afterLast() |
移動到resultSet的最後面 |
ResultSet物件維護了一個指向表格資料行的指標,指標預設在第一行之前,呼叫next()或previous()等移動指標的方法,可以使指標指向具體的資料行,進而呼叫getObject()方法獲取指定的查詢結果。
8. ResultSetMetaData介面
ResultSetMetaData介面用於獲取關於ResultSet 物件中列的型別和屬性資訊的物件。ResultSetMetaData介面的常用方法:
方法名稱 |
功能描述 |
getColumCount() |
返回所有欄位的數目 |
getColumName(int colum) |
根據欄位的索引值取得欄位的名稱 |
getColumType (int colum) |
根據欄位的索引值取得欄位的型別 |
準備工作
下載MySQL資料庫驅動檔案
https://downloads.mysql.com/archives/c-j/
下載後解壓縮,複製mysql-connector-java-5.1.49.jar檔案,到專案lib目錄中。
使用滑鼠右鍵單擊該JAR包,在彈出框中選擇【Build Path】→【Add to Build Path】,此時Eclipse會將該JAR包釋出到類路徑下。
加入驅動後的專案結構如圖所示:
mysql-connector-java-5.1.49-bin.jar和mysql-connector-java-5.1.49.jar有什麼區別?
使用上是沒區別的一樣的,都可以用,帶-bin的檔案裡在編譯的的時候裡面多了幾個編譯用的校驗檔案而已。
編寫程式碼