




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、JDBC數(shù)據(jù)庫訪問2007 iSoftStone Holdings Ltd. All Rights Reserved.2目標 了解 JDBC簡介 掌握 JDBC的連接步驟 掌握 Connection 對象的應用 掌握 Statement對象的應用 掌握 Recordset對象的應用 掌握 事務(wù)機制2007 iSoftStone Holdings Ltd. All Rights Reserved.3什么是JDBC JDBC, 全稱為Java DataBase Connectivity 它是一個面向?qū)ο蟮膽贸绦蚪涌冢ˋPI), 通過它可訪問各類關(guān)系數(shù)據(jù)庫。 JDBC也是java核心類庫的一部分。
2、 JDBC的最大特點是它獨立于具體的關(guān)系數(shù)據(jù)庫。JDBC API 中定義了一些Java類分別用來表示與數(shù)據(jù)庫的連接(connections), SQL語句(SQL Statements)結(jié)果集(result sets)以及其它的數(shù)據(jù)庫對象, 使得Java程序能方便地與數(shù)據(jù)庫交互并處理所得的結(jié)果 2007 iSoftStone Holdings Ltd. All Rights Reserved.4 JDBC 簡介簡介 與ODBC相類似,JDBC接口(API)也包括兩個層次: 面向應用的面向應用的API:Java API,抽象接口,供應用程序開發(fā)人員使用(連接數(shù)據(jù)庫,執(zhí)行SQL語句,獲得結(jié)果) 面
3、向數(shù)據(jù)庫的面向數(shù)據(jù)庫的API:Java Driver API,供開發(fā)商開發(fā)數(shù)據(jù)庫驅(qū)動程序2007 iSoftStone Holdings Ltd. All Rights Reserved.5 數(shù)據(jù)庫訪問技術(shù)簡介 客戶機/服務(wù)器應用程序 數(shù)據(jù)庫編程數(shù)據(jù)庫編程ODBCJDBC兩個常用的API數(shù)據(jù)庫數(shù)據(jù)庫執(zhí)行 SQL 語句檢索查詢結(jié)果 2007 iSoftStone Holdings Ltd. All Rights Reserved.6 JDBC JDBC(Java 數(shù)據(jù)庫連接)(sun公司提供)Java 應用程序編程接口Java應用程序數(shù)據(jù)庫數(shù)據(jù)庫 插 入修 改刪 除查詢 2007 iSoftSt
4、one Holdings Ltd. All Rights Reserved.7JDBC主要對象 JDBC是JAVA程序連接數(shù)據(jù)庫的接口 主要是三個對象: Connection Statement ResultSet 另外 PreparedStatement 用于執(zhí)行預編譯語句 CallableStatement 用于調(diào)用存儲過程2007 iSoftStone Holdings Ltd. All Rights Reserved.8 JDBC 驅(qū)動程序的類型JDBC 驅(qū)動程序的類型 JDBC-ODBC橋驅(qū)動程序及橋驅(qū)動程序及ODBC驅(qū)動程序驅(qū)動程序 本地本地API部分部分Java驅(qū)動程序驅(qū)動程序
5、JDBC-Net 純純Java驅(qū)動程序驅(qū)動程序 本地協(xié)議純本地協(xié)議純Java驅(qū)動程序驅(qū)動程序 2007 iSoftStone Holdings Ltd. All Rights Reserved.9JDBC driver 的類型共有四種類型的共有四種類型的JDBC driver: 類型類型1 JDBC-ODBC bridge driver 這種類型的driver能使客戶端通過JDBC調(diào)用連接到一個使用ODBC driver的數(shù)據(jù)庫。使用這類driver需要每個客戶端機器都裝上數(shù)據(jù)庫對應的ODBC driver 類型類型2 部分部分Java、部分本機驅(qū)動程序、部分本機驅(qū)動程序 這種驅(qū)動使用Java
6、實現(xiàn)與數(shù)據(jù)庫廠商專有API的混和形式來提供數(shù)據(jù)訪問。它比前一種方式要快。JDBC驅(qū)動將標準的JDBC調(diào)用轉(zhuǎn)變?yōu)閷?shù)據(jù)庫API的本地調(diào)用,該類型的驅(qū)動程序是本地部分Java技術(shù)性能的本機API驅(qū)動程序 2007 iSoftStone Holdings Ltd. All Rights Reserved.10JDBC driver 的類型(續(xù)) 類型類型3 中間數(shù)據(jù)訪問服務(wù)器中間數(shù)據(jù)訪問服務(wù)器 這種方式使用一個中間數(shù)據(jù)訪問服務(wù)器,通過這種服務(wù)器,它可以把Java客戶端連接到多個數(shù)據(jù)庫服務(wù)器上 ,這種方式不需要客戶端的數(shù)據(jù)庫驅(qū)動,而是使用網(wǎng)絡(luò)服務(wù)器中間層來訪問一個數(shù)據(jù)庫 類型類型4 純純Java驅(qū)動程
7、序驅(qū)動程序 這種方式使用廠商專有的網(wǎng)絡(luò)協(xié)議把JDBC API調(diào)用轉(zhuǎn)換成直接的網(wǎng)絡(luò)調(diào)用,這種方式的本質(zhì)是使用套接字(Socket)進行編程。純Java驅(qū)動運行在客戶端,并且直接訪問數(shù)據(jù)庫 ,該類型的驅(qū)動程序是本地協(xié)議完全Java技術(shù)性能的驅(qū)動程序,同時它的使用也比較簡單,客戶端不需要安裝任何中間件或者運行庫 2007 iSoftStone Holdings Ltd. All Rights Reserved.11 JDBC 體系結(jié)構(gòu) 2-1Java 程序 JDBC 驅(qū)動程序數(shù)據(jù)庫數(shù)據(jù)庫SQL 命令 結(jié)果 2007 iSoftStone Holdings Ltd. All Rights Reserv
8、ed.12JDBC 體系結(jié)構(gòu) 2-2 應用層應用層 Driver StatementResultSet Connection 各接口驅(qū)動層驅(qū)動層 2007 iSoftStone Holdings Ltd. All Rights Reserved.13JDBC URL JDBC URL提供了一種標識數(shù)據(jù)庫的方法,可以使相應的驅(qū)動程序能識別該數(shù)據(jù)庫并與之建立連接。JDBC的作用是提供某些約定,驅(qū)動程序編程員在構(gòu)造它們的JDBC URL時應該遵循這些約定 JDBC URL 應允許驅(qū)動程序編程員將一切所需的信息編入其中,而無須要求用戶去做任何系統(tǒng)管理工作 2007 iSoftStone Holding
9、s Ltd. All Rights Reserved.14JDBC URL的標準語法 JDBC URL 的標準語法如下所示。它由以下幾個不風組成,各部分間用冒號分隔: jdbc: jdbc 協(xié)議。JDBC URL 中的協(xié)議總是 jdbc 驅(qū)動程序名或數(shù)據(jù)庫連接機制的名稱 一種標識數(shù)據(jù)庫的方法以O(shè)racle thin 驅(qū)動為例:String url = jdbc:oracle:thin:127.0.0.1:1521:dbname;2007 iSoftStone Holdings Ltd. All Rights Reserved.15JDBC URL的標準語法 JDBC URL 的標準語法如下所示
10、。它由以下幾個不風組成,各部分間用冒號分隔: jdbc: jdbc 協(xié)議。JDBC URL 中的協(xié)議總是 jdbc 驅(qū)動程序名或數(shù)據(jù)庫連接機制的名稱 一種標識數(shù)據(jù)庫的方法以O(shè)racle thin 驅(qū)動為例:String url = jdbc:oracle:thin:127.0.0.1:1521:dbname;2007 iSoftStone Holdings Ltd. All Rights Reserved.16使用JDBC存取數(shù)據(jù)庫 1 加載JDBC driver; 2 在客戶程序與數(shù)據(jù)庫之間建立連接; 3 通過數(shù)據(jù)庫連接將SQL語句從Java程序傳到數(shù)據(jù)庫; 4 通過數(shù)據(jù)庫返回的記錄集得到所
11、需的數(shù)據(jù); 5 如需要,再用修改后的數(shù)據(jù)更新數(shù)據(jù)庫; 6 操作結(jié)束,關(guān)閉連接2007 iSoftStone Holdings Ltd. All Rights Reserved.17 JDBC 程序訪問數(shù)據(jù)庫的步驟 開 始導入 java.sql包 加載并注冊驅(qū)動程序創(chuàng)建一個 Connection 對象創(chuàng)建一個 Statement 對象執(zhí)行語句關(guān)閉ResultSet 對象關(guān)閉Statement對象關(guān)閉連接結(jié) 束使用ResultSet對象2007 iSoftStone Holdings Ltd. All Rights Reserved.181 加載 JDBC driver 驅(qū)動程序一般都由數(shù)據(jù)庫廠商
12、提供 / 1 注冊,加載 JDBC驅(qū)動 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver(); 2007 iSoftStone Holdings Ltd. All Rights Reserved.192 與數(shù)據(jù)庫建立連接 使用DriverManager類的getConnection()方法可以與指定的數(shù)據(jù)庫建立連接。如: String url = jdbc:oracle:thin:127.0.0.1:1521:stan ; String username = stan; String password = stan
13、; Connection conn = null ; / 2 與數(shù)據(jù)庫建立連接 conn = DriverManager.getConnection (url, username , password);其中的username和password分別對應所連數(shù)據(jù)庫的用戶名和口令。2007 iSoftStone Holdings Ltd. All Rights Reserved.203. 創(chuàng)建一個Statement 對象 / 3 創(chuàng)建 Statement 對象 Statement stmt = conn.createStatement(); 建立了Statement對象后,就可以利用該對象, 根據(jù)
14、行指定的SQL語句,執(zhí)行對數(shù)據(jù)庫的操作2007 iSoftStone Holdings Ltd. All Rights Reserved.214. 執(zhí)行指定的SQL語句 一旦建立了Statement對象后,就可以利用該對象的executeQuery()方法讓數(shù)據(jù)庫執(zhí)行指定的SQL語句。 如: / 4 執(zhí)行指定的sql語句String sql = select empno,ename,sal from emp ;ResultSet rs = stmt.executeQuery(sql);2007 iSoftStone Holdings Ltd. All Rights Reserved.225.
15、獲取結(jié)果集中的數(shù)據(jù) 調(diào)用ResultSet對象的next()方法得到該集合中新的一行。如果ResultSet集合多于一行,可以用一個循環(huán)將它取出如: / 5 獲取結(jié)果集中的數(shù)據(jù) while(rs.next() int no = rs.getInt(empno); String name = rs.getString(ename); System.out.println(EmpNo: +no+ EmpName: +name); 其中,ResultSet的getXXX()方法用于獲取該行中指定列的值。2007 iSoftStone Holdings Ltd. All Rights Reserved
16、.236關(guān)閉數(shù)據(jù)庫連接 對數(shù)據(jù)庫操作結(jié)束后,通常要依次關(guān)閉打開的ResultSet, Statement和Connection對象。如: rs.close(); stmt.close(); conn.close(); 要注意的是,前面介紹的許多方法如executeQuery()和executeUpdate()等方法均會產(chǎn)生一個SQLException的異常,所以使用這些語句時要作相應的異常處理2007 iSoftStone Holdings Ltd. All Rights Reserved.24 API 小結(jié) getConnection(String url,String user,Strin
17、g pwd) / 獲得連接 registerDriver(Driver driver) / 注冊驅(qū)動 createStatement() / 建立語句對象,以執(zhí)行sql void close() / 關(guān)閉當前連接 executeQuery(String sql) executeUpdate(String sql) boolean execute(sql) 如查返回結(jié)果集,則返回true,否則返回false2007 iSoftStone Holdings Ltd. All Rights Reserved.25 API 小結(jié)(續(xù))boolean next() / 使當前行下移getXxx(int
18、columnNumber) / 取指定列值getXxx(String columnName) / 取指定列名的值close() 關(guān)閉 2007 iSoftStone Holdings Ltd. All Rights Reserved.26 PreparedStatement接口 3-1 PreparedStatement接口(預編譯的 SQL 語句)PreparedStatement 用于提高運行時效率執(zhí)行 PreparedStatement 對象比執(zhí)行 Statement 對象快Statement 接口接口2007 iSoftStone Holdings Ltd. All Rights Re
19、served.27PreparedStatement 表示預編譯的 SQL 語句的對象。 SQL 語句被預編譯并且存儲在 PreparedStatement 對象中。 然后可以使用此對象高效地多次執(zhí)行該語句 要多次執(zhí)行一個SQL語句,使用PreparedStatement SQL 語句在創(chuàng)建時提供參數(shù) 在執(zhí)行 PreparedStatement 時,只傳遞參數(shù)值 通過不同的參數(shù)值多次調(diào)用如如: / 創(chuàng)建 Statement 對象,預編譯sql語句String sql = “ update emp set sal=sal+? where empno = ?” ; pstmt = conn.pre
20、pareStatement(sql);2007 iSoftStone Holdings Ltd. All Rights Reserved.28為預編譯sql賦值 在創(chuàng)建 PreparedStatement 對象之后,必須為參數(shù)賦值 使用setXXX方法如:如: / 為已經(jīng)預編譯的sql賦值 pstmt.setInt(1, 1); / 為第一個參數(shù)(?)賦值 1 pstmt.setInt(2, 7369); / 為第二個參數(shù)(?)賦值 73692007 iSoftStone Holdings Ltd. All Rights Reserved.29PreparedStatement 與 State
21、ment 無論多少次地使用同一個SQL命令, PreparedStatement都只對它解析和編譯一次。 當使用Statement對象時,每次執(zhí)行一個SQL命 令時,都會對它進行解析和編譯 使用PreparedStatement對象比使用Statement 對象的速度更快。 2007 iSoftStone Holdings Ltd. All Rights Reserved.30事務(wù) 將一組語句組合起來,以便形成一個可以在所有語句都運行良好時進行提交的事務(wù),或者在其中的一個語句出現(xiàn)錯誤時,就像所有命令都沒有發(fā)出執(zhí)行那樣。也就是說:所有的語句都成功才算成功,一個語句失敗所有的都失敗,不允許其中一條語句成功,一條
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度澳大利亞大學本碩連讀合同
- 二零二五年度勞動合同解除協(xié)議
- 二零二五年度農(nóng)村合作社鄉(xiāng)村旅游開發(fā)合作協(xié)議
- 鏟車勞務(wù)承包合同鏟車合同書
- 社交網(wǎng)絡(luò)運營合作合同
- 公司內(nèi)外部往來文書規(guī)范手冊
- 小熊維尼的友情世界讀后感
- 生物技術(shù)在農(nóng)村綜合利用項目協(xié)議
- 新能源汽車充電站投資協(xié)議
- 企業(yè)數(shù)字化轉(zhuǎn)型解決方案手冊
- 公有云技術(shù)應用PPT高職完整全套教學課件
- 養(yǎng)老專題:養(yǎng)老理念
- 藝術(shù)概論PPT全套完整教學課件
- 幼兒園多媒體PPT課件制作PPT完整全套教學課件
- 《蘇東坡傳》閱讀匯報
- 2023離婚協(xié)議模板下載
- 特殊需要兒童的鑒定與分類
- 《正常人體結(jié)構(gòu)》考試參考題庫(大學復習)
- 裝飾員工薪資工資表
- 怒江水電開發(fā)的工程倫理案例分析
- 2023新疆中考數(shù)學試卷及答案解析
評論
0/150
提交評論