




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、JDBC數(shù)據(jù)庫連接數(shù)據(jù)庫連接回顧 Java語言中字節(jié)流和字符流包含哪些類語言中字節(jié)流和字符流包含哪些類,以及區(qū)別?以及區(qū)別? 異常處理常用的關(guān)鍵字有哪些?異常處理常用的關(guān)鍵字有哪些?理解JDBC原理掌握ResultSet接口的使用掌握PreparedStatement接口的使用本章目標(biāo)點(diǎn)點(diǎn)重重點(diǎn)點(diǎn)重重掌握Connection接口的使用掌握Statement接口的使用點(diǎn)點(diǎn)重重點(diǎn)點(diǎn)重重為什么需要JDBCJDBC是Java數(shù)據(jù)庫連接技術(shù)的簡(jiǎn)稱,提供連接各種常用數(shù)據(jù)庫的能力Java應(yīng)用程序應(yīng)用程序JDBCJDBCJSP/Servlet客戶端客戶端數(shù)據(jù)庫服務(wù)器數(shù)據(jù)庫服務(wù)器應(yīng)用服務(wù)器應(yīng)用服務(wù)器數(shù)據(jù)庫服務(wù)器
2、數(shù)據(jù)庫服務(wù)器客戶端客戶端JDBC的工作原理JDBC API 提供者:Sun公司 內(nèi)容:供程序員調(diào)用的接口與類, 集成在java.sql和javax.sql包中如:DriverManager類Connection接口Statement接口ResultSet接口DriverManager 提供者:Sun公司 作用:管理各種不同的JDBC驅(qū)動(dòng)JDBC 驅(qū)動(dòng) 提供者:數(shù)據(jù)庫廠商 作用:負(fù)責(zé)連接各種不同的數(shù)據(jù)庫SqlServer OracleJDBC API JDBC Driver Manager JDBC 驅(qū)動(dòng)驅(qū)動(dòng) JDBC 驅(qū)動(dòng)驅(qū)動(dòng) Java 應(yīng)用程序應(yīng)用程序 JDBC APIJDBC API主要功
3、能:與數(shù)據(jù)庫建立連接、執(zhí)行SQL 語句、處理結(jié)果 DriverManager :依據(jù)數(shù)據(jù)庫的不同,管理JDBC驅(qū)動(dòng) Connection :負(fù)責(zé)連接數(shù)據(jù)庫并擔(dān)任傳送數(shù)據(jù)的任務(wù) Statement :由 Connection 產(chǎn)生、負(fù)責(zé)執(zhí)行SQL語句 ResultSet:負(fù)責(zé)保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果ConnectionDriverManagerStatementResultSet客戶端客戶端數(shù)據(jù)庫數(shù)據(jù)庫 服務(wù)器服務(wù)器1234try Class.forName(JDBC驅(qū)動(dòng)類驅(qū)動(dòng)類); try Connection con=DriverManager.getConnection
4、(URL,數(shù)據(jù)庫用戶名數(shù)據(jù)庫用戶名,密碼密碼); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Table1); while (rs.next() int x = rs.getInt(a); String s = rs.getString(b); float f = rs.getFloat(c); rs.close(); stmt.close(); con.close(); 2、與數(shù)據(jù)庫建立連接、與數(shù)據(jù)庫建立連接 3、發(fā)送、發(fā)送SQL語句,并得到返回結(jié)果語
5、句,并得到返回結(jié)果 4 4、處理返回結(jié)果、處理返回結(jié)果 1、加載、加載JDBC驅(qū)動(dòng)驅(qū)動(dòng) URLURL用來用來標(biāo)識(shí)數(shù)據(jù)庫標(biāo)識(shí)數(shù)據(jù)庫 5 5、釋放資源、釋放資源JDBC工作模板 JDBC驅(qū)動(dòng) 使用純Java方式連接數(shù)據(jù)庫 由JDBC驅(qū)動(dòng)直接訪問數(shù)據(jù)庫 優(yōu)點(diǎn):100% Java,快又可跨平臺(tái) 缺點(diǎn):訪問不同的數(shù)據(jù)庫需要下載專用的JDBC驅(qū)動(dòng)oracleproduct10.2.0db_1ouijlibJDBC 驅(qū)動(dòng)驅(qū)動(dòng) Java 應(yīng)用程序應(yīng)用程序 JDBC API DBServerJDBC驅(qū)動(dòng) Connection conn = null;try Class.forName(oracle.jdbc.d
6、river.OracleDriver); catch (ClassNotFoundException e) try conn = DriverManager.getConnection(jdbc:oracle:thin:localhost:1521:orcl, “scott,“tiger); catch (SQLException e) finally try conn.close(); catch (SQLException e) 演示示例演示示例1 1:使用純:使用純Java方式連接并關(guān)閉方式連接并關(guān)閉關(guān)閉連接關(guān)閉連接建立連接建立連接加載驅(qū)動(dòng)加載驅(qū)動(dòng)必須進(jìn)行相關(guān)異常處理必須進(jìn)行相關(guān)異常處理
7、 JDBC應(yīng)用對(duì)寵物和主人信息進(jìn)行管理: 寵物和主人信息存儲(chǔ)在Orcal數(shù)據(jù)庫中 通過JDBC對(duì)寵物和主人進(jìn)行增、刪、改、查字段名字段說明字段類型其 他id編號(hào)編號(hào)int主鍵、自增主鍵、自增name昵稱昵稱varchar(12)health健康值健康值intlove親密度親密度intstrain品種品種varchar(20)字段名字段說明字段類型其 他id編號(hào)編號(hào)int主鍵、自增主鍵、自增name姓名姓名varchar(12)password密碼密碼varchar(20)money元寶數(shù)元寶數(shù)int使用Statement添加寵物 Connection conn = null;Statement
8、 stmt = null; / 建立連接建立連接 stmt = conn.createStatement();StringBuffer sbSql = new StringBuffer(insert into dog (name,health,love,strain) values ( );sbSql.append(name + ,);sbSql.append(health + ,);sbSql.append(love + ,);sbSql.append(strain + );stmt.execute(sbSql.toString();stmt.close();conn.close();執(zhí)行執(zhí)
9、行SQL語句語句獲取獲取Statement對(duì)象對(duì)象關(guān)閉關(guān)閉Statement對(duì)象對(duì)象聲明聲明Statement變量變量示例示例演示示例演示示例2:使用:使用Statement添加寵物添加寵物 也可使用:也可使用:stmt. executeUpdate(sbSql.toString();使用Statement更新寵物 Connection conn = null;Statement stmt = null;/ 建立連接建立連接 / 更新狗狗信息到數(shù)據(jù)庫更新狗狗信息到數(shù)據(jù)庫stmt = conn.createStatement();String sql=update dog set health=
10、80,love=15 where id=1;int result=stmt.executeUpdate(sql);stmt.close();conn.close();示例示例演示示例演示示例3:使用:使用Statement更新寵物更新寵物 執(zhí)行執(zhí)行SQL語句語句獲取獲取Statement對(duì)象對(duì)象關(guān)閉關(guān)閉Statement對(duì)象對(duì)象聲明聲明Statement變量變量更新、添加、刪除操更新、添加、刪除操作只是作只是sql語句不同語句不同Statement和ResultSet查詢寵物 Connection conn = null;Statement stmt = null;ResultSet rs =
11、 null;/ 建立連接建立連接 stmt = conn.createStatement();rs = stmt.executeQuery(select * from dog); while ( rs.next() ) System.out.print( rs.getInt(1) +t);System.out.print( rs.getString(2) +t);System.out.print(rs.getInt(health)+ t); rs.close();stmt.close();conn.close();執(zhí)行執(zhí)行SQL語句進(jìn)行查詢,語句進(jìn)行查詢,結(jié)果賦給結(jié)果集變量結(jié)果賦給結(jié)果集變量r
12、s注意關(guān)閉順序注意關(guān)閉順序遍歷結(jié)果集遍歷結(jié)果集可使用可使用列號(hào)或列號(hào)或列名列名標(biāo)識(shí)列標(biāo)識(shí)列ResultSet存在一個(gè)光標(biāo),光標(biāo)所指行為當(dāng)前行存在一個(gè)光標(biāo),光標(biāo)所指行為當(dāng)前行 示例示例演示示例演示示例4:使用:使用Statement和和ResultSet查詢寵物查詢寵物 Statement常用方法方法名方法名說說 明明ResultSet executeQuery(String sql)執(zhí)行執(zhí)行SQL查詢并獲取到查詢并獲取到ResultSet對(duì)象對(duì)象int executeUpdate(String sql)可以執(zhí)行插入、刪除、更新等操作,返可以執(zhí)行插入、刪除、更新等操作,返回值是執(zhí)行該操作所影響的
13、行數(shù)回值是執(zhí)行該操作所影響的行數(shù)boolean execute(String sql) 可以執(zhí)行任意可以執(zhí)行任意SQL語句,然后獲得一個(gè)語句,然后獲得一個(gè)布爾值,表示是否返回布爾值,表示是否返回ResultSetResultSet常用方法方法名說 明boolean next()將光標(biāo)從當(dāng)前位置向下移動(dòng)一行將光標(biāo)從當(dāng)前位置向下移動(dòng)一行boolean previous()游標(biāo)從當(dāng)前位置向上移動(dòng)一行游標(biāo)從當(dāng)前位置向上移動(dòng)一行void close()關(guān)閉關(guān)閉ResultSet 對(duì)象對(duì)象int getInt(int colIndex)以以int形式獲取結(jié)果集當(dāng)前行指定列號(hào)值形式獲取結(jié)果集當(dāng)前行指定列號(hào)值
14、int getInt(String colLabel)以以int形式獲取結(jié)果集當(dāng)前行指定列名值形式獲取結(jié)果集當(dāng)前行指定列名值float getFloat(int colIndex)以以float形式獲取結(jié)果集當(dāng)前行指定列號(hào)值形式獲取結(jié)果集當(dāng)前行指定列號(hào)值float getFloat(String colLabel)以以float形式獲取結(jié)果集當(dāng)前行指定列名值形式獲取結(jié)果集當(dāng)前行指定列名值String getString(int colIndex)以以String 形式獲取結(jié)果集當(dāng)前行指定列號(hào)值形式獲取結(jié)果集當(dāng)前行指定列號(hào)值String getString(String colLabel) 以以
15、String形式獲取結(jié)果集當(dāng)前行指定列名值形式獲取結(jié)果集當(dāng)前行指定列名值為什么要使用PreparedStatement使用JDBC完成主人登錄驗(yàn)證功能演示示例演示示例5:SQL注入隱患注入隱患String sql=select * from master where name=+name+ and password=+password+;rs = stmt.executeQuery(sql); 正常登錄正常登錄 非正常登錄非正常登錄 SQL注入注入提高了代碼的可提高了代碼的可讀性和可維護(hù)性讀性和可維護(hù)性 PreparedStatement如何避免SQL注入的隱患?使用PreparedState
16、ment 接口 繼承自 Statement接口 比Statement對(duì)象使用起來更加靈活,更有效率 提高了提高了SQL語句執(zhí)行的性能語句執(zhí)行的性能 提高了安全性提高了安全性問題問題分析分析 PreparedStatement接接口口 (預(yù)編譯的(預(yù)編譯的 SQL 語句)語句)使用PreparedStatement更新寵物 Connection conn = null;PreparedStatement pstmt = null;/ 建立連接建立連接 / 更新狗狗信息到數(shù)據(jù)庫更新狗狗信息到數(shù)據(jù)庫String sql=update dog set health=?,love=? where id=?;pstmt = conn.prepareStatement(sql);pstmt.setInt(1, 80);pstmt.setInt(2, 15);pstmt.setInt(3, 1);pstmt.executeUpdate(); pstmt.close();conn.close();聲明聲明Pre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)英語四級(jí)考試模擬試卷寫作素材與范文解析
- 2025年一建《機(jī)電工程管理與實(shí)務(wù)》考試質(zhì)量控制與驗(yàn)收真題演練與題庫實(shí)戰(zhàn)技巧
- 旅游行業(yè)假期出行與工作表現(xiàn)證明書(6篇)
- 2025年礦用電纜項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 快樂的春游記作文10篇
- 深海礦產(chǎn)資源勘探技術(shù)2025年深海礦產(chǎn)資源勘探技術(shù)裝備出口與海外市場(chǎng)拓展研究報(bào)告
- 汽車鎖基本結(jié)構(gòu)及功能測(cè)試題
- 農(nóng)村電子商務(wù)與農(nóng)民合作協(xié)議
- 2025年煤礦設(shè)計(jì)試題
- 在校實(shí)習(xí)生表現(xiàn)與成果證明(5篇)
- 2024-2025學(xué)年下學(xué)期初中道德與法治七年級(jí)期末復(fù)習(xí)試卷(含答案)
- 2025年政府采購管理實(shí)務(wù)考試卷及答案
- 2025連云港師范高等專科學(xué)校輔導(dǎo)員考試試題及答案
- 2025年中國(guó)ORC低溫余熱發(fā)電系統(tǒng)行業(yè)市場(chǎng)現(xiàn)狀及未來發(fā)展前景預(yù)測(cè)報(bào)告
- 非典型溶血尿毒綜合征多學(xué)科實(shí)踐共識(shí)解讀(2025版)
- 早期阿爾茨海默病疾病修飾治療專家共識(shí)(2025年版)解讀
- 2025-2030年即熱式電熱水器行業(yè)市場(chǎng)發(fā)展分析及政策建議與策略研究報(bào)告
- 《谷歌企業(yè)文化》課件
- 母子暑假協(xié)議書
- 建筑工程標(biāo)準(zhǔn)課件
- 石油化工安裝工程概算指標(biāo)說明(2019版)
評(píng)論
0/150
提交評(píng)論