第10章-JDBC數(shù)據(jù)庫連接_第1頁
第10章-JDBC數(shù)據(jù)庫連接_第2頁
第10章-JDBC數(shù)據(jù)庫連接_第3頁
第10章-JDBC數(shù)據(jù)庫連接_第4頁
第10章-JDBC數(shù)據(jù)庫連接_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論