c23數(shù)據(jù)庫(kù)連接jdbc.ppt

上傳人:za****8 文檔編號(hào):20008702 上傳時(shí)間:2021-01-24 格式:PPT 頁(yè)數(shù):30 大?。?23.52KB
收藏 版權(quán)申訴 舉報(bào) 下載
c23數(shù)據(jù)庫(kù)連接jdbc.ppt_第1頁(yè)
第1頁(yè) / 共30頁(yè)
c23數(shù)據(jù)庫(kù)連接jdbc.ppt_第2頁(yè)
第2頁(yè) / 共30頁(yè)
c23數(shù)據(jù)庫(kù)連接jdbc.ppt_第3頁(yè)
第3頁(yè) / 共30頁(yè)

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《c23數(shù)據(jù)庫(kù)連接jdbc.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《c23數(shù)據(jù)庫(kù)連接jdbc.ppt(30頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、Java 數(shù)據(jù)庫(kù)連接 (JDBC) 第 23 章 回顧 線程的概念 Java中線程的實(shí)現(xiàn)方式 共享數(shù)據(jù)的保護(hù)(同步) 線程間通信 “死鎖”的概念及預(yù)防 目標(biāo) JDBC的概念 JDBC的使用 PreparedStatement 接口 CallableStatement 接口 JDBC 概念 2-1 JDBC是 JDK核心的一部分 由一組用 Java 編程語(yǔ)言編寫(xiě)的類和接口組成 用于執(zhí)行 SQL語(yǔ)句 使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠用純 Java API 來(lái)編寫(xiě)數(shù)據(jù) 庫(kù)應(yīng)用程序 基本功能 與數(shù)據(jù)庫(kù)建立連接 發(fā)送 SQL 語(yǔ)句到數(shù)據(jù)庫(kù) 處理返回結(jié)果 JDBC 概念 2-2 特性 易于理解和使用 允許 Java用

2、一致的方法訪問(wèn)不同類型的數(shù)據(jù)庫(kù) 提供多種選擇,適應(yīng)不同需求 屏蔽不同數(shù)據(jù)庫(kù)數(shù)據(jù)類型定義的差異 在類 Java.SQL.Types 中定義了一組通用 SQL 類型 標(biāo)識(shí)符 提供 DatabaseMetaData 接口,允許用戶檢索關(guān)于 所使用的 DBMS 信息 JDBC 驅(qū)動(dòng)程序 JDBC的三個(gè)組件 應(yīng)用程序 驅(qū)動(dòng)程序管理器 ( DriverManager ) 驅(qū)動(dòng)程序 ( Driver ) JDBC驅(qū)動(dòng)程序的類型 JDBC-ODBC 橋加 ODBC 驅(qū)動(dòng)程序 本地 API JDBC 網(wǎng)絡(luò)純 Java 驅(qū)動(dòng)程序 本地協(xié)議純 Java 驅(qū)動(dòng)程序 第一種驅(qū)動(dòng)程序 JDBC-ODBC 橋 優(yōu)點(diǎn) JDK

3、 的標(biāo)準(zhǔn)部分 到處都有 ODBC 驅(qū) 動(dòng)程序 缺點(diǎn) 中間層次可能會(huì)導(dǎo) 致性能降低 客戶端需要安裝 ODBC, 不適合大型 網(wǎng)絡(luò)分布式應(yīng)用 第二種驅(qū)動(dòng)程序 本地 API 優(yōu)點(diǎn) 數(shù)據(jù)庫(kù)客戶端好時(shí), 會(huì)獲得高效率 缺點(diǎn) 客戶端需要安裝合 適的數(shù)據(jù)庫(kù)客戶機(jī)庫(kù) 程序,不適合大型網(wǎng) 絡(luò)分布式應(yīng)用 第三種驅(qū)動(dòng)程序 JDBC 網(wǎng)絡(luò)純 Java 驅(qū)動(dòng) 程序 優(yōu)點(diǎn) 中間層次提供了靈活性: 可以用相同的代碼訪問(wèn)不 同的數(shù)據(jù)庫(kù) 純 Java 驅(qū)動(dòng)程序,客戶 端安裝容易,適合大型網(wǎng) 絡(luò)分布應(yīng)用 缺點(diǎn) 額外的中間層次可能有 損整體系統(tǒng)性能 第四種驅(qū)動(dòng)程序 本地協(xié)議純 Java 驅(qū)動(dòng) 程序 優(yōu)點(diǎn) 直接與數(shù)據(jù)庫(kù)進(jìn)行通訊, 性

4、能最佳 純 Java 驅(qū)動(dòng)程序,客戶 端安裝容易,適合大型網(wǎng) 絡(luò)分布應(yīng)用 缺點(diǎn) 緊密耦合會(huì)影響靈活性, 特別是如果您需要改變應(yīng) 用程序中的底層數(shù)據(jù)庫(kù)時(shí) 四種驅(qū)動(dòng)使用的差異 不同點(diǎn) 準(zhǔn)備工作不同 比如, JDBC-ODBC 橋需要先建立數(shù)據(jù)源;本地協(xié) 議純 Java 驅(qū)動(dòng)程序需要下載 jar文件,設(shè)置 classpath 程序不同 驅(qū)動(dòng)程序名稱字符串不同 數(shù)據(jù)庫(kù) URL標(biāo)識(shí)字符串不同 如果將驅(qū)動(dòng)程序、數(shù)據(jù)庫(kù) URL標(biāo)識(shí)字符串通過(guò)配置 文件實(shí)現(xiàn),則程序可以完全相同 除此之外沒(méi)有區(qū)別 JDBC 使用步驟 7-1 加載驅(qū)動(dòng)程序 Class.forName 通過(guò)名字 className加載類 class

5、Name 因驅(qū)動(dòng)不同而不同 第一種: sun.jdbc.odbc.JdbcOdbcDriver 第四種舉例: oracle.jdbc.OracleDriver try Class.forName(className); catch(ClassNotFoundException e) JDBC 使用步驟 7-2 建立數(shù)據(jù)庫(kù)連接 數(shù)據(jù)庫(kù) URL標(biāo)識(shí) jdbc: 第一種舉例: jdbc:odbc:dsn_name 第四種舉例: jdbc:oracle:thin:zhuxg:1521:oracledb import java.sql.*; / 其他代碼 try Connection con = Dri

6、verManager.getConnection(“URL” ,“登錄名” ,“口令 ); catch(SQLException e) JDBC 使用步驟 7-3 創(chuàng)建 Statement 對(duì)象 Statement 對(duì)象負(fù)責(zé)將 SQL 語(yǔ)句發(fā)送到 DBMS Statement sql = con.createStatement(); JDBC 使用步驟 7-4 提交 SQL 語(yǔ)句 Statement 對(duì)象的方法 int rt = stmt.executeUpdate(sqlString); 用于提交 DDL 、 insert、 update和 delete 返回值為語(yǔ)句影響行數(shù)或 0 Resu

7、ltSet rs = stmt.executeQuery(sqlString); 用于提交 SELECT 返回值為 ResultSet 對(duì)象,記錄的集合 boolean b = stmt.execute(sqlString); 用于執(zhí)行任何 SQL 語(yǔ)句,可能返回多個(gè)結(jié)果。結(jié)果可通 過(guò) getResultSet(), getUpdateCount(), getMoreResults() 獲得 返回 true 表示第一個(gè) 返回 結(jié)果為 ResultSet JDBC 使用步驟 7-5 處理返回結(jié)果 ResultSet 使用 next()方法可以順序查詢 結(jié)果集將游標(biāo)最初定位在第一行的前面 第一次調(diào)

8、用 next()方法使游標(biāo)移動(dòng)到第一行 以后每次調(diào)用,下移一行 next()方法返回一個(gè) boolean型數(shù)據(jù),當(dāng)游標(biāo)移動(dòng)到最后一行 之后返回 false 使用 getXXX 方法檢索數(shù)據(jù) getInt() 用于檢索整型值 getString() 用于檢索字符串值 getXXX 方法可按字段名和字段順序,按字段順序時(shí)不可顛倒順 序,比如先 rs.getInt(5); 再 rs.getString (3); JDBC 使用步驟 7-6 關(guān)閉 Statement 一個(gè) Statement 對(duì)象同時(shí)只能打開(kāi)一個(gè) ResultSet 執(zhí)行完 SQL 語(yǔ)句可以關(guān)閉 Statement stmt.clos

9、e(); JDBC 使用步驟 7-7 斷開(kāi)數(shù)據(jù)庫(kù)連接 建立連接比較費(fèi)時(shí) 所有數(shù)據(jù)庫(kù)操作完成,可以斷開(kāi)連接 Connection con.close(); 一個(gè)完整的例子 Ch4_1Employees.java Statement 高級(jí)應(yīng)用 4-1 Statement sql =con.createStatement(type, concurrency); 根據(jù) type, concurrency 的取值, stmt返回相應(yīng)類型的結(jié)果 集 type的取值 ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_INSENSITIVE ResultSet

10、.TYPE_SCROLL_SENSITIVE concurrency的取值 ResultSet.CONCUR_READ_ONLY ResultSet.CONCUR_UPDATABLE Statement 高級(jí)應(yīng)用 4-2 ResultSet.TYPE_FORWARD_ONLY 結(jié)果集只能向前滾動(dòng) 默認(rèn)方式 ResultSet 有關(guān)方法 next() ResultSet.TYPE_SCROLL_INSENSITIVE 結(jié)果集可前后滾動(dòng) 數(shù)據(jù)庫(kù)內(nèi)容變化時(shí) ResultSet 內(nèi)容不變 ResultSet.TYPE_SCROLL_SENSITIVE 結(jié)果集可前后滾動(dòng) 數(shù)據(jù)庫(kù)內(nèi)容變化時(shí) ResultS

11、et 內(nèi)容同步改變 Statement 高級(jí)應(yīng)用 4-3 前后滾動(dòng) ResultSet 有關(guān)方法 previous(); next(); beforeFirst(); afterLast(); first(); last(); isAfterLast(); isBeforeFirst(); isFirst(); islast(); getRow(); absolute(int row); 注意 行號(hào)從 1開(kāi)始 如果取負(fù)值,就是倒數(shù)的行數(shù), absolute(-1);表示移到最 后一行 移到最后一行再用 getRow()獲取行號(hào),就得到總的行數(shù) Statement 高級(jí)應(yīng)用 4-4 Result

12、Set.CONCUR_READ_ONLY ResultSet 只能讀數(shù)據(jù)庫(kù) ResultSet.CONCUR_UPDATABLE ResultSet 能用于更新數(shù)據(jù)表 ResultSet 的相關(guān)方法 public void updateXXX(String columnName, XXX x) throws SQLException public void updateRow() throws SQLException 例程序 JdbcDemo.java 高級(jí)查詢 使用過(guò)濾條件 sql.executeQuery(Select * from Student where Id2); 排序查詢 sq

13、l.executeQuery(Select * from Student Order By Id); 模糊查詢 可以用 SQL語(yǔ)句操作符 LIKE進(jìn)行模式匹配,使用“ %” 代替一個(gè)或多個(gè)字符,用一個(gè)下劃線“ _”代替一個(gè)字 符。 sql.executeQuery(“Select * from Student Where Name Like 王 % ); 更新添加刪除記錄 添加新記錄 sql. executeUpdate(“INSERT INTO Student VALUES(33,LiuMing,xcn)”); 刪除記錄 sql. executeUpdate(“Delete From Stu

14、dent Where Id 2”); 更新記錄 sql. executeUpdate(“Update Student Set Name= Wang Where Id =2”); PreparedStatement接口 2-1 要多次執(zhí)行一個(gè) SQL語(yǔ)句, 使用 PreparedStatement SQL 語(yǔ)句在創(chuàng)建時(shí)提供參數(shù) 在執(zhí)行 PreparedStatement 時(shí),只傳遞參數(shù)值 通過(guò)不同的參數(shù)值多次調(diào)用 PreparedStatement pStmt = conn.preparedStatement( insert into emp (empno , ename) values(?,?

15、); PreparedStatement接口 2-2 在創(chuàng)建 PreparedStatement 對(duì)象之后,必須為參 數(shù)賦值 使用 setXXX方法 用 executeUpdate() 方法執(zhí)行 SQL語(yǔ)句 例程序 Ch4_2EmployeesPrepStat.java CallableStatement 接口 CallableStatement 用于執(zhí)行 SQL 存儲(chǔ)過(guò)程 CallableStatement cStmt = conn.prepareCall(call showEmployees(?,?); IN參數(shù) setXXX(index,value); OUT參數(shù) registerOutParameter(index,Type) getXXX(index); IN OUT參數(shù) 設(shè)置輸入和 IN參數(shù)相同 也需要象 OUT參數(shù)一樣注冊(cè)和獲取返回值 例程序 JDBCPureJava.java 使用套接字 客戶端程序 服務(wù)端程序 JDBC 數(shù)據(jù)庫(kù)( DBMS) Socket發(fā)送 SQL語(yǔ)句,接 收查詢結(jié)果 優(yōu)點(diǎn):客戶端不需 要任何驅(qū)動(dòng)程序 總結(jié) JDBC的概念 JDBC的使用 PreparedStatement 接口 CallableStatement 接口 作業(yè) P329 習(xí)題 2

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!