JDBC包含主要兩個部分:
|-- part 1.由SUN公司制定的規(guī)范接口
|-- java.sql --> 核心包
|-- javax.sql --> 擴展包
|-- part 2.由數(shù)據(jù)庫廠商所提供的數(shù)據(jù)庫驅(qū)動程序,它們實現(xiàn)了part 1部分。
JDBC的驅(qū)動程序包含以下四種類型:
|-- 第一代驅(qū)動(JDBC - ODBC Bridge)
|-- 首先把JDBC的調(diào)用轉(zhuǎn)換成ODBC的調(diào)用,再用ODBC與具體的數(shù)據(jù)庫系統(tǒng)通信。
|-- 第二代驅(qū)動 (Native - API party - Java driver 本地API部分Java驅(qū)動)
|-- Conrerts JDBC calls into calls on the native client API of a specific RODMS.
|-- 缺點:不同的數(shù)據(jù)庫需要安裝不同的客戶端(每臺電腦都要裝)。
|-- 第三代驅(qū)動 (JDBC - net pure Java driver 網(wǎng)絡(luò)純Java驅(qū)動)
|-- 提供網(wǎng)絡(luò)節(jié)點,通過網(wǎng)絡(luò)節(jié)點訪問數(shù)據(jù)庫。
|-- Translates JDBC calls into a DBMS independent net protocol, which is then translated
to a DBMS protocol by a server.
|-- 第四代驅(qū)動 (Native protocol pure Java driver 本地協(xié)議純Java驅(qū)動)
|-- Conrerts JDBC calls directly into the network protocol used by DBMS.
JDBC核心API
java.sql
|-- Driver [Interface] 所有驅(qū)動必需實現(xiàn)的接口
|-- DriverManager [Class] 用來管理一組數(shù)據(jù)庫的驅(qū)動
|-- Connection [Interface] 與數(shù)據(jù)庫的一個連接對象
|-- Statement [Interface] 用于執(zhí)行一個靜態(tài)的SQL語句,并返回它所生成的結(jié)果對象
|-- PreparedStatement [Interface] 表示預(yù)編譯SQL語句對象(動態(tài))
|-- CallableStatement [interface] 表示用來調(diào)用存儲過程對象
|-- ResultSet [Interface] 存放查詢結(jié)果集的對象
|-- Type [Class]
|-- Blob [Interface] 二進(jìn)制大對象
|-- Clob [Interface] 字符大對象
|-- SQLException [Class] 數(shù)據(jù)庫最底層異常(已檢測異常)
|-- SQLWarning [Class] 警告
|-- DatabaseMetaData [Class] 基本數(shù)據(jù)的元數(shù)據(jù)
|-- ResultSetMetaDate [Class] 結(jié)果集的元數(shù)據(jù)
編寫JDBC程序步驟
step1:注冊驅(qū)動程序 [也就是把驅(qū)動加載到JVM中]
1.Class.forName("驅(qū)動類的全限定名");
如:Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName("com.mysql.jdbc.Driver");
2.使用new操作符來創(chuàng)建驅(qū)動類對象
如:Driver d = new oracle.jdbc.driver.OracleDriver();
//DriverManager.registerDriver(d);
3.使用系統(tǒng)屬性-Djava.drivers來指定驅(qū)動類
如:-Djava.drivers = com.mysql.jdbc.Driver;
step2:獲取數(shù)據(jù)庫連接 [Connection]
如:
String url = "主協(xié)議:此協(xié)議:thin:@ip地址:端口號:數(shù)據(jù)庫實例名";
String user = "XXX";
String pwd = "XXX";
Connection con = DriverManager.getConnection(url,user,pwd);
step3:創(chuàng)建執(zhí)行的SQL的環(huán)境 [也就是創(chuàng)建Statement]
如:Statement stm = con.createStatement();
step4:執(zhí)行SQL語句
如:String sql = "select ..........";
ResultSet rs = stm.executeQuary(sql);
step5:如果是select語句,則處理結(jié)果集 [ResultSet]
如:while(rs.next()){
rs.getXXX系列的方法();
}
step6:釋放資源 [close]
如:if(con != null) con.close();
if(stm != null) stm.close();
if(rs != null) rs.close();
聯(lián)系客服