JDBC API主要位于JDK中的java.sql包中(之后擴展的內容位于javax.sql包中),主要包括(斜體代表接口,需驅動程序提供者來具體實現):

  • DriverManager:負責加載各種不同驅動程序(Driver),并根據不同的請求,向調用者返回相應的數據庫連接(Connection)。
  • Driver:驅動程序,會將自身加載到DriverManager中去,并處理相應的請求并返回相應的數據庫連接(Connection)。
  • Connection:數據庫連接,負責與進行數據庫間通訊,SQL執行以及事務處理都是在某個特定Connection環境中進行的。可以產生用以執行SQL的Statement。
  • Statement:用以執行SQL查詢和更新(針對靜態SQL語句和單次執行)。
  • PreparedStatement:用以執行包含動態參數的SQL查詢和更新(在服務器端編譯,允許重復執行以提高效率)。
  • CallableStatement:用以調用數據庫中的存儲過程
  • SQLException:代表在數據庫連接的建立和關閉和SQL語句的執行過程中發生了例外情況(即錯誤)。

利用Class.forName()方法來加載JDBC驅動程序(Driver)至DriverManager:

Class.forName( "com.somejdbcvendor.TheirJdbcDriver" );

然后,從DriverManager中,通過JDBC URL,用戶名,密碼來獲取相應的數據庫連接(Connection):

Connection conn = DriverManager.getConnection(
"jdbc:somejdbcvendor:other data needed by some jdbc vendor", // URL
"myLogin", // 用戶名
"myPassword" ); // 密碼

不同的JDBC驅動程序的URL是不同的,它永遠以“jdbc:”開始,但后面的內容依照驅動程序類型不同而各異。在獲取Connection之后,便可以建立Statement用以執行SQL語句。下面是一個插入(INSERT)的例子:

 Statement stmt = conn.createStatement();
stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " );

查詢(SELECT)的結果存放于結果集(ResultSet)中,可以按照順序依次訪問:

 Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery( "SELECT * FROM MyTable" );
while ( rs.next() ) {
int numColumns = rs.getMetaData().getColumnCount();
for ( int i = 1 ; i <= numColumns ; i++ ) {
// 與大部分Java API中下標的使用方法不同,字段的下標從1開始
// 當然,還有其他很多的方式(ResultSet.getXXX())獲取數據
System.out.println( "COLUMN " + i + " = " + rs.getObject(i) );
}
}
rs.close();
stmt.close();

但是,通常,Java程序員們更傾向于使用PreparedStatement。下面的例子使用上例中的conn對象:

 PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement( "SELECT i.*, j.* FROM Omega i, Zappa j
WHERE i = ? AND j = ?" );
// 使用問號作為參數的標示
// 進行參數設置
// 與大部分Java API中下標的使用方法不同,字段的下標從1開始,1代表第一個問號
// 當然,還有其他很多針對不同類型的類似的PreparedStatement.setXXX()方法
ps.setString(1, "Poor Yorick");
ps.setInt(2, 8008);
// 結果集
rs = ps.executeQuery();
while ( rs.next() ) {
int numColumns = rs.getMetaData().getColumnCount();
for ( int i = 1 ; i <= numColumns ; i++ ) {
// 與大部分Java API中下標的使用方法不同,字段的下標從1開始
// 當然,還有其他很多的方式(ResultSet.getXXX())獲取數據
System.out.println( "COLUMN " + i + " = " + rs.getObject(i) );
}
}
catch (SQLException e) {
// 異常處理
}
finally { // 使用finally進行資源釋放
try {
rs.close();
ps.close();
} catch( SQLException e){} // 異常處理:忽略close()時的錯誤
}
以上內容轉自:http://zh.wikipedia.org/w/index.php?title=JDBC&variant=zh-hans

本BLOG用于個人學習總結!
目的在于記錄個人成長.
所有文字均屬于個人理解.
如有錯誤,望多指教!不勝感激!