JDBC 由 Java 編寫的類及接口組成,同時提供了用于實現對數據庫訪問的 JDBC API,并支持 SQL 語言。利用 JDBC 可以將 Java 代碼連接到 Oracle、DB2、SQLServer、MySQL 等數據庫,從而實現對數據庫中的數據操作的目的。
一、JDBC 簡介
JDBC(Java DataBase Connectivity,Java數據庫連接)是一種用于執行 SQL 語句的 Java API,可以為多種關系型數據庫提供統一訪問,它由一組用 Java 編寫的類和接口組成,具有很好的跨平臺特性。使用 JDBC 編寫的數據庫應用程序可以在任何支持 Java 的平臺上運行,而不必在不同的平臺上編寫不同的應用程序。JDBC 提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。同時,JDBC 也是個商標名。JDBC 的主要功能如下:
- 建立與數據庫或者其他數據源的鏈接。
- 向數據庫發送 SQL 命令。
- 處理數據庫的返回結果。
二、JDBC 常用類和接口
連接到數據庫(Connection)、建立操作指令(Statement)、執行查詢指令(executeQuery)、獲得查詢結果(ResultSet)等。
1??驅動程序管理類(DriverManager)
JDBC 的管理類,作用于用戶和驅動程序之間。它跟蹤在可用的驅動程序,并在數據庫和相應驅動程序之間建立連接。另外,DriverManager 類也處理諸如驅動程序登錄時間限制及登錄和跟蹤消息的顯示事務。對于簡單的應用程序,一般程序員需要在此類中直接使用唯一的方法時 DriverManager.getConnection()。該方法將建立與數據庫的鏈接。JDBC 允許用戶調用 DriverManager 的方法 getDriver()、getDrivers()和 registerDriver() 及 Driver 的方法 connect()。
2??聲明類(Statement)
Statement對象用于將 SQL 語句發送到數據庫中。實際上有三種 Statement 對象,它們都作為在給定鏈接上執行 SQL 語句的包容器:Statement、PreparedStatement(Statement的子類)和 CallableStatement(PreparedStatement的子類)。它們都專用于發送特定類型的 SQL 語句:
- Statement 對象用于執行不帶參數的簡單的 SQL 語句。Statement 接口提供了執行語句和獲取結果的基本方法。
- PerparedStatement 對象用于執行帶或不帶 IN 參數的預編譯 SQL 語句。PeraredStatement 接口添加處理 IN 參數的方法。
- CallableStatement 對象用于執行對數據庫已存儲過程的調用。CallableStatement 添加處理 OUT 參數的方法。
Statement提供了許多方法,最常用的方法如下:
①execute():運行語句,返回是否有結果集。
②executeQuery():運行查詢語句,返回 ReaultSet 對象。
③executeUpdata():運行更新操作,返回更新的行數。
④addBatch():增加批處理語句。
⑤executeBatch():執行批處理語句。
⑥clearBatch():清除批處理語句。
3??數據庫連接類(Connection)
Connection 對象代表與數據庫的鏈接。連接過程包括所執行的 SQL 語句和在該連接上所返回的結果。一個應用程序可與單個數據庫有一個或多個連接,或者可與很多數據庫有連接。打開連接與數據庫建立連接的標準方法是調用 DriverManager.getConnection()。
String url=“jdbc:mysql://127.0.0.1:3306/xxp”;
String user=“root”;
String password=“tiger”;
DriverManager.getConnection(url,user,password);
4??結果集合類(ResultSet)
ResultSet 包含符合 SQL 語句中條件的所有行記錄,并且它通過一套 get 方法(這些get方法可以訪問當前行中的不同列)提供了對這些行中數據的訪問。ResultSet.next() 用于移動到 ResultSet 中的下一行,使下一行成為當前行。
5??JDBC 編程步驟
加載驅動程序
Class.forName(driverClass);
加載 mysql 驅動:Class.forName(“com.mysql.jdbc.Driver”);
加載 oracle 驅動:Class.forName(“oracle.jdbc.driver.OracleDriver”);獲得數據庫連接
DriverManager.getConnection(url,user,pwd);
DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”,user,pwd);創建 Statement 對象:
conn.createStatement();
向數據庫發送 SQL 命令
處理數據庫的返回結果(ResultSet類)
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "root";
String pwd = "root";
//1.加載驅動程序
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
//2.獲得數據庫鏈接
Connection conn = DriverManager.getConnection(url, user, pwd);
//3.通過數據庫的連接操作數據庫,實現增刪改查(使用Statement類)
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from user");
//4.處理數據庫的返回結果(使用ResultSet類)
while (rs.next()) {
System.out.println(rs.getString("user_name") + " "
+ rs.getString("user_password"));
}
//5.關閉資源
rs.close();
st.close();
conn.close();
}