




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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ù)的簡稱,提供連接各種常用數(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ū)動JDBC 驅(qū)動 提供者:數(shù)據(jù)庫廠商 作用:負(fù)責(zé)連接各種不同的數(shù)據(jù)庫SqlServer OracleJDBC API JDBC Driver Manager JDBC 驅(qū)動驅(qū)動 JDBC 驅(qū)動驅(qū)動 Java 應(yīng)用程序應(yīng)用程序 JDBC APIJDBC API主要功
3、能:與數(shù)據(jù)庫建立連接、執(zhí)行SQL 語句、處理結(jié)果 DriverManager :依據(jù)數(shù)據(jù)庫的不同,管理JDBC驅(qū)動 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ū)動類驅(qū)動類); 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ū)動驅(qū)動 URLURL用來用來標(biāo)識數(shù)據(jù)庫標(biāo)識數(shù)據(jù)庫 5 5、釋放資源、釋放資源JDBC工作模板 JDBC驅(qū)動 使用純Java方式連接數(shù)據(jù)庫 由JDBC驅(qū)動直接訪問數(shù)據(jù)庫 優(yōu)點(diǎn):100% Java,快又可跨平臺 缺點(diǎn):訪問不同的數(shù)據(jù)庫需要下載專用的JDBC驅(qū)動oracleproduct10.2.0db_1ouijlibJDBC 驅(qū)動驅(qū)動 Java 應(yīng)用程序應(yīng)用程序 JDBC API DBServerJDBC驅(qū)動 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ū)動加載驅(qū)動必須進(jìn)行相關(guān)異常處理必須進(jìn)行相關(guān)異常處理
7、 JDBC應(yīng)用對寵物和主人信息進(jìn)行管理: 寵物和主人信息存儲在Orcal數(shù)據(jù)庫中 通過JDBC對寵物和主人進(jìn)行增、刪、改、查字段名字段說明字段類型其 他id編號編號int主鍵、自增主鍵、自增name昵稱昵稱varchar(12)health健康值健康值intlove親密度親密度intstrain品種品種varchar(20)字段名字段說明字段類型其 他id編號編號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對象對象關(guān)閉關(guān)閉Statement對象對象聲明聲明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對象對象關(guān)閉關(guān)閉Statement對象對象聲明聲明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é)果集可使用可使用列號或列號或列名列名標(biāo)識列標(biāo)識列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對象對象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)前位置向下移動一行將光標(biāo)從當(dāng)前位置向下移動一行boolean previous()游標(biāo)從當(dāng)前位置向上移動一行游標(biāo)從當(dāng)前位置向上移動一行void close()關(guān)閉關(guān)閉ResultSet 對象對象int getInt(int colIndex)以以int形式獲取結(jié)果集當(dāng)前行指定列號值形式獲取結(jié)果集當(dāng)前行指定列號值
14、int getInt(String colLabel)以以int形式獲取結(jié)果集當(dāng)前行指定列名值形式獲取結(jié)果集當(dāng)前行指定列名值float getFloat(int colIndex)以以float形式獲取結(jié)果集當(dāng)前行指定列號值形式獲取結(jié)果集當(dāng)前行指定列號值float getFloat(String colLabel)以以float形式獲取結(jié)果集當(dāng)前行指定列名值形式獲取結(jié)果集當(dāng)前行指定列名值String getString(int colIndex)以以String 形式獲取結(jié)果集當(dāng)前行指定列號值形式獲取結(jié)果集當(dāng)前行指定列號值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對象使用起來更加靈活,更有效率 提高了提高了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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司返合同范本
- 單位合伙型聯(lián)營合同范本
- 廠房維修簡易合同范本
- 公司企業(yè)工程合同范本
- 京東金條借款合同范本
- 醫(yī)用化妝品購銷合同范例
- 口罩機(jī)采購合同范本
- 出租文物合同范例
- 合作期限 合同范例
- 合作英語合同范本
- 2025年高考地理復(fù)習(xí):農(nóng)業(yè)(解析版)
- 《中醫(yī)藥學(xué)概論》期末考試復(fù)習(xí)題庫(含答案)
- 義務(wù)教育道德與法治課程標(biāo)準(zhǔn)2022版試題庫及答案
- 2024年《形勢與政策》知識考試題庫(含答案)
- 標(biāo)書代寫合作合同協(xié)議書
- DWI高信號常見疾病的鑒別診斷課件-2
- 2024年內(nèi)蒙古中考地理生物試卷(含答案)
- 2024年邵陽職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫完美版
- 2024年湖南理工職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- 中國風(fēng)川劇戲曲京劇文化傳統(tǒng)文化國粹世界戲劇日活動策劃完整課件兩篇
- (正式版)JTT 1495-2024 公路水運(yùn)危險(xiǎn)性較大工程安全專項(xiàng)施工方案審查規(guī)程
評論
0/150
提交評論