02-JDBC学习手册:JDBC编程步骤【重点重点】
1 ?注冊(cè)一個(gè) Driver
注冊(cè)驅(qū)動(dòng)程序有三種方式:
方式一:Class.forName(“oracle.jdbc.driver.OracleDriver”);
JAVA 規(guī)范中明確規(guī)定:所有的驅(qū)動(dòng)程序必須在靜態(tài)初始化代碼塊中將驅(qū)動(dòng)注冊(cè)到驅(qū)動(dòng)程序管理器中。
方式二:Driver drv = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(drv);
方式三:通過(guò)設(shè)置系統(tǒng)屬性 jdbc.drivers,編譯時(shí)在虛擬機(jī)中加載驅(qū)動(dòng).
javac xxx.java ( 要確保驅(qū)動(dòng)包在 classpath 里)java –D jdbc.drivers=驅(qū)動(dòng)全名 類名
使用系統(tǒng)屬性名,加載驅(qū)動(dòng) -D 表示為系統(tǒng)屬性賦值
附 : mysql 的 Driver 的全名 com.mysql.jdbc.Driver
SQLServer 的 Driver 的全名 com.microsoft.jdbc.sqlserver.SQLServerDriver
- JDBC 中驅(qū)動(dòng)加載的時(shí)序圖
以上是 JDBC 中驅(qū)動(dòng)加載的時(shí)序圖。時(shí)序圖主要有以下 7 個(gè)動(dòng)作:
1. 客戶調(diào)用 Class.forName(“XXXDriver”)加載驅(qū)動(dòng)。
2. 此時(shí)此驅(qū)動(dòng)類首先在其靜態(tài)語(yǔ)句塊中初始化此驅(qū)動(dòng)的實(shí)例。
3. 再向驅(qū)動(dòng)管理器注冊(cè)此驅(qū)動(dòng)。
4. 客戶向驅(qū)動(dòng)管理器 DriverManager 調(diào)用 getConnection 方法,
5. DriverManager 調(diào)用注冊(cè)到它上面的能夠理解此 URL 的驅(qū)動(dòng)建立一個(gè)連接,
6. 在該驅(qū)動(dòng)中建立一個(gè)連接,一般會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)于數(shù)據(jù)庫(kù)提供商的 XXXConnection連接對(duì)象,
7. 驅(qū)動(dòng)向客戶返回此連接對(duì)象,不過(guò)在客戶調(diào)用的 getConnection 方法中返回的為一個(gè)java.sql.Connection 接口,而具體的驅(qū)動(dòng)返回一個(gè)實(shí)現(xiàn) java.sql.Connection 接口的具體類。
2 ?建立連接
Connection連接是通過(guò) DriverManager 的靜態(tài)方法 getConnection(.....)來(lái)得到的,這個(gè)方法的實(shí)質(zhì)是把參數(shù)傳到實(shí)際的 Driver 中的 connect()方法中來(lái)獲得數(shù)據(jù)庫(kù)連接的。
Oracle URL 的格式: jdbc:oracle:thin:(協(xié)議)@XXX.XXX.X.XXX:XXXX(IP 地址及端口號(hào)):XXXXXXX(所使用的庫(kù)名)
MySql URL 的寫法:例: jdbc:mysql://192.168.8.21:3306/test
3 ?獲得一個(gè) Statement ?對(duì)象
Statement stmt = conn.createStatement();4 ?通過(guò) Statement ?執(zhí)行 l Sql ?語(yǔ)句
stmt.executeQuery(String sql); //返回一個(gè)查詢結(jié)果集。stmt.executeUpdate(String sql); //返回值為 int 型,表示影響記錄的條數(shù)。
將 sql 語(yǔ)句通過(guò)連接發(fā)送到數(shù)據(jù)庫(kù)中執(zhí)行,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。
5 ?處理結(jié)果集
使用 Connection 對(duì)象獲得一個(gè) Statement,Statement 中的 executeQuery(String sql) 方法可 以使用select語(yǔ)句查詢,并且返回一個(gè)結(jié)果集 ResultSet通過(guò)遍歷這個(gè)結(jié)果集,可以獲得select 語(yǔ)句的查尋結(jié)果,ResultSet 的 next()方法會(huì)操作一個(gè)游標(biāo)從第一條記錄的前面開(kāi)始讀取,直 到最后一條記錄。executeUpdate(String sql) 方法用于執(zhí)行 DDL 和 DML 語(yǔ)句,比如可以 update,delete 操作。
只有執(zhí)行 select 語(yǔ)句才有結(jié)果集返回。
例: Statement str=con.createStatement(); // 創(chuàng)建 Statement
6 關(guān)閉數(shù)據(jù)庫(kù)連接 關(guān)閉數(shù)據(jù)庫(kù)連接(釋放資源)
rs.close(); stmt.close(); con.close();ResultSet Statement Connection ?是依次依賴的。
注意:要按先 ResultSet 結(jié)果集,后 Statement,最后 Connection 的順序關(guān)閉資源,因?yàn)?Statement 和 ResultSet 是需要連接時(shí)才可以使用的,所以在使用結(jié)束之后有可能其它的 Statement 還需要連接,所以不能現(xiàn)關(guān)閉 Connection。
圖形演繹編寫JDBC程序的一般過(guò)程
總結(jié)
以上是生活随笔為你收集整理的02-JDBC学习手册:JDBC编程步骤【重点重点】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 01-JDBC学习手册:JDBC概述之J
- 下一篇: 03-JDBC学习手册:JDBC中几个重