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