標籤:
參考書籍:《J2EE開源編程精要15講》
JDBC(Java DataBase Connectivity)是Java Web應用程式開發的最主要API之一。當向資料庫查詢資料時,Java應用程式先調用JDBC API,然後JDBC API把查詢語句提交給JDBC磁碟機,JDBC磁碟機把查詢語句轉化為特定資料庫理解的形式,JDBC磁碟機檢索SQL查詢的結果,並轉化為Java應用程式使用的等價JDBC API類和介面。
JDBC磁碟機
JDBC軟體包本身不能連結任何資料庫,它只是一個API架構,需要資料庫驅動程式以及其他軟體包提供實施方法。
JDBC資料庫驅動程式分為以下幾類:
- JDBC-ODBC橋接磁碟機:把JDBC API翻譯成ODBC API,適用MS Access、MS SQL Server等資料庫
- 部分本機API的Java磁碟機:有些資料庫,如DB2和Informix,包含資料庫廠商供應的JDBC磁碟機,包含可JDBC API可直接調用的類
- 純Java磁碟機:通過IP/TCP把Java應用程式或applet連結到資料庫
常見資料庫磁碟機和資料庫URL(本地URL)
資料庫名 |
資料庫磁碟機 |
資料庫URL(本地) |
Oracle9i |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:thin:@localhost:1521:dbName |
SQL Server 2000 |
com.microsoft.jdbc.sqlserver.SQLServerDriver |
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ddbName; |
MySQL |
com.mysql.jdbc.Driver |
jdbc:mysql://localhost/dbName |
JDBC-ODBC |
sun.jdbc.odbc.JdbcOdbcDriver |
jdbc:odbc:datasourceName |
JDBC API的核心組件
- DriverManager類:用於跟蹤可用的JDBC驅動程式並產生資料庫連接
- Connection介面:用於取得資料庫資訊,產生資料庫語句,管理資料庫事務
- ResultSet介面:訪問SQL查詢返回的資料。next()以此定位每一行資料,用相應的get方法讀取資料
- Statement介面:提供在基層串連上啟動並執行SQL語句,產生結果集。有2個子介面,PreparedStatement和CallableStatement
PreparedStatement 提供可以與查詢資訊一起先行編譯的一種語句類型
CallableStatement繼承自PreparedStatement ,用來封裝資料庫中預存程序的執行
用JDBC查詢資料庫
裝載磁碟機
調用Class類的forName()方法裝入資料庫特定的磁碟機,如:裝載MySQL的磁碟機
Class.forName("com.mysql.jdbc.Driver");
串連資料庫
先從DriverManager類產生Connection對象,如
String url="jdbc:mysql://localhost/mydatabase";
Connection con=DriverManager.getConnection(url,"Bill","123");
本地MySQL資料庫mydatabase,使用者名稱為Bill,密碼為123
查詢資料庫
1) Statement對象:把簡單查詢語句發送到資料庫
executeQuery()方法執行簡單的選擇(SELECT)查詢,返回ResultSet對象
executeUpdate()方法執行SQL的INSERT、UPDATE或DELETE語句,返回int值,給出收影響的行數
如:
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from students");
2) PreparedStatement對象:允許執行參數化的查詢
如:
String sql="select * from students where stuID=?";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1,"56789");//設定第一個問號處參數值為56789,類型為String
ResultSet rs=ps.executeQuery();
樣本:
1 import java.sql.*; 2 3 class Jdbc Test{ 4 public static void main(String args[]){ 5 try{ 6 Class.forName("com.mysql.jdbc.Driver"); 7 String url="jdbc:mysql://localhost/mydatabase"; 8 Connection con=DriverManager.getConnection(url,"Bill","123"); 9 String sql="select * from students where stuID=?";10 PreparedStatement ps=con.prepareStatement(sql);11 ps.setString(1,"56789");12 ResultSet rs=ps.executeQuery();13 while(rs.next()){14 String name=rs.getString("student_name");15 }16 rs.close();17 con.close();18 }catch(SQLException e){19 e.printStackTrace();20 }21 }22 }
View Code
Java Web編程的主要組件技術——JDBC