JDBC是 Java DataBase Connectivity 的縮寫亚情,它是連接Java程序和數(shù)據(jù)庫服務(wù)器的紐帶皮壁。Java應(yīng)用程序必須通過JDBC驅(qū)動器來訪問數(shù)據(jù)庫,java.sql.DriverManager類運(yùn)用橋梁設(shè)計(jì)模式來實(shí)現(xiàn)與各種不同的JDBC驅(qū)動器的通信廉羔。
JDBC API 主要位于 java.sql 包中:
- Driver接口和DriverManager類
- Connection接口
- Statement接口
- PrepareStatement接口
- ResultSet接口
在Java程序中,通過JDBC API訪問數(shù)據(jù)庫包含以下步驟:
- 獲得要訪問的數(shù)據(jù)庫的JDBC驅(qū)動器的類庫费奸,把它放到classpath中。
- 在程序中加在并注冊JDBC驅(qū)動器进陡,其中JDBC-ODBC驅(qū)動器是在JDK中自帶的愿阐,默認(rèn)為已經(jīng)注冊。
// 加載 JdbcOdbcDriver 類
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// 加載 SQLServerDriver 類
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
// 注冊 SQLServerDriver 類
java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
// 加載 OracleDriver 類
Class.forName("oracle.jdbc.driver.OracleDriver");
// 注冊 OracleDriver 類
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// 加載 MySQL Driver 類
Class.forName("com.mysql.jdbc.Driver");
// 注冊 MySQL Driver 類
java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());
- 建立與數(shù)據(jù)庫的連接四濒。
Connection con = java.sql.DriverManager.getConnection(dburl, user, password);
dburl表示連接數(shù)據(jù)庫的 JDBC URL换况,user和password分別表示連接數(shù)據(jù)庫的用戶名和密碼。
# JDBC URL 的一般形式
jdbc:drivertype:driversubtype://parameters
# JDBC-ODBC Driver 連接數(shù)據(jù)庫
jdbc:odbc:datasource
# Oracle 數(shù)據(jù)庫連接
jdbc:oracle:this:@localhost:1521:sid
# SQLServer 數(shù)據(jù)庫連接
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB_NAME
# MySQL 數(shù)據(jù)庫連接
jdbc:mysql://localhost:3306/DB_NAME
- 創(chuàng)建Statement對象盗蟆,準(zhǔn)備執(zhí)行SQL戈二。
Statement stmt = con.createStatement();
- 執(zhí)行SQL語句。
String sql = "select `col1`, `col2` from `table1` where 1";
ResultSet rs = stmt.executeQuery(sql);
- 訪問ResultSet中的記錄集喳资。
while(rs.next()){
String col1 = rs.getString(1);
float col2 = rs.getFloat(2);
}
- 依次關(guān)閉ResultSet觉吭、Statement和Connection對象。
rs.close();
stmt.close();
con.close();
JDBC 2.0 提供了 javax.sql.DataSource 接口仆邓,它負(fù)責(zé)建立與數(shù)據(jù)庫的連接鲜滩,當(dāng)在應(yīng)用程序中訪問數(shù)據(jù)庫時(shí)不必編寫連接數(shù)據(jù)庫的代碼,可以直接從數(shù)據(jù)源獲得數(shù)據(jù)庫連接节值。