使用java實(shí)現(xiàn)面向?qū)ο缶幊蘝第1頁(yè)
使用java實(shí)現(xiàn)面向?qū)ο缶幊蘝第2頁(yè)
使用java實(shí)現(xiàn)面向?qū)ο缶幊蘝第3頁(yè)
使用java實(shí)現(xiàn)面向?qū)ο缶幊蘝第4頁(yè)
使用java實(shí)現(xiàn)面向?qū)ο缶幊蘝第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、JDBC第十章回顧與作業(yè)點(diǎn)評(píng)Collection 、List 、Set 、Map接口的聯(lián)系和區(qū)別有哪些? ArrayList和LinkedList有什么異同之處?有哪些遍歷集合的方法?為什么要引入泛型集合?預(yù)習(xí)檢查JDBC的英文全稱是什么?JDBC的主要作用是什么?PreparedStatement與Statement相比,具有什么優(yōu)勢(shì)?本章任務(wù)使用JDBC實(shí)現(xiàn)寵物信息的增刪改查使用JDBC實(shí)現(xiàn)寵物主人信息的查詢使用JDBC實(shí)現(xiàn)寵物主人登錄本章目標(biāo)理解JDBC原理掌握Connection接口的使用掌握Statement接口的使用掌握ResultSet接口的使用掌握PreparedStateme

2、nt接口的使用JDBC是Java數(shù)據(jù)庫(kù)連接技術(shù)的簡(jiǎn)稱,提供連接各種常用數(shù)據(jù)庫(kù)的能力Java應(yīng)用程序JDBCJDBCJSP/Servlet客戶端數(shù)據(jù)庫(kù)服務(wù)器應(yīng)用服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器客戶端為什么需要JDBCJDBC 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ù)庫(kù)廠商作用:負(fù)責(zé)連接各種不同的數(shù)據(jù)庫(kù)Sql ServerOracleJDBC API

3、JDBC Driver Manager JDBC 驅(qū)動(dòng) JDBC 驅(qū)動(dòng) Java 應(yīng)用程序 JDBC程序的工作原理JDBC API可做三件事:與數(shù)據(jù)庫(kù)建立連接、執(zhí)行SQL 語(yǔ)句、處理結(jié)果DriverManager :依據(jù)數(shù)據(jù)庫(kù)的不同,管理JDBC驅(qū)動(dòng)Connection :負(fù)責(zé)連接數(shù)據(jù)庫(kù)并擔(dān)任傳送數(shù)據(jù)的任務(wù) Statement :由 Connection 產(chǎn)生、負(fù)責(zé)執(zhí)行SQL語(yǔ)句ResultSet:負(fù)責(zé)保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果ConnectionDriverManagerStatementResultSet客戶端數(shù)據(jù)庫(kù)服務(wù)器1234JDBC APItry Class.for

4、Name(JDBC驅(qū)動(dòng)類); catch (ClassNotFoundException e) System.out.println(無(wú)法找到驅(qū)動(dòng)類);try Connection con=DriverManager.getConnection(JDBC URL,數(shù)據(jù)庫(kù)用戶名,密碼); 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.g

5、etString(b); float f = rs.getFloat(c); con.close(); catch (SQLException e) e.printStackTrace();與數(shù)據(jù)庫(kù)建立連接 發(fā)送SQL語(yǔ)句,并得到返回結(jié)果 處理返回結(jié)果 加載JDBC驅(qū)動(dòng) JDBC URL用來(lái)標(biāo)識(shí)數(shù)據(jù)庫(kù) 釋放資源JDBC工作模板JDBC驅(qū)動(dòng)由數(shù)據(jù)庫(kù)廠商提供在個(gè)人開(kāi)發(fā)與測(cè)試中,可以使用JDBC-ODBC橋連方式在生產(chǎn)型開(kāi)發(fā)中,推薦使用純Java驅(qū)動(dòng)方式DB ServerDBServerJDBC APIJDBC Driver Manager純Java 驅(qū)動(dòng) JDBCODBC橋Java 應(yīng)用程序 OD

6、BCJDBC驅(qū)動(dòng) 5-1使用JDBC-ODBC橋方式連接數(shù)據(jù)庫(kù)將對(duì)JDBC API的調(diào)用,轉(zhuǎn)換為對(duì)另一組數(shù)據(jù)庫(kù)連接API的調(diào)用優(yōu)點(diǎn):可以訪問(wèn)所有ODBC可以訪問(wèn)的數(shù)據(jù)庫(kù)缺點(diǎn):執(zhí)行效率低、功能不夠強(qiáng)大JDBC-ODBC橋Java 應(yīng)用程序 JDBC APIODBC APIODBC層DBServerJDBC驅(qū)動(dòng) 5-2使用JDBC-ODBC進(jìn)行橋連配置數(shù)據(jù)源:控制面板ODBC數(shù)據(jù)源系統(tǒng)DSN編程JDBC驅(qū)動(dòng) 5-3Connection conn = null;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundE

7、xception e) logger.error(e);try conn = DriverManager.getConnection(jdbc:odbc:ConnSQLServer,jbit, bdqn);System.out.println(建立連接成功!); catch (SQLException e) logger.error(e); finally try conn.close(); catch (SQLException e) logger.error(e);關(guān)閉連接建立連接加載驅(qū)動(dòng)必須進(jìn)行相關(guān)異常處理 使用純Java方式連接數(shù)據(jù)庫(kù) 由JDBC驅(qū)動(dòng)直接訪問(wèn)數(shù)據(jù)庫(kù)優(yōu)點(diǎn):100% Jav

8、a,快又可跨平臺(tái)缺點(diǎn):訪問(wèn)不同的數(shù)據(jù)庫(kù)需要下載專用的JDBC驅(qū)動(dòng)JDBC 驅(qū)動(dòng) Java 應(yīng)用程序 JDBC API DBServerJDBC驅(qū)動(dòng) 5-4JDBC驅(qū)動(dòng) 5-5Connection conn = null;try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch (ClassNotFoundException e) logger.error(e);try conn = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;Databa

9、seName=epet, jbit, bdqn);System.out.println(建立連接成功!); catch (SQLException e) logger.error(e); finally try conn.close(); catch (SQLException e) logger.error(e);關(guān)閉連接建立連接加載驅(qū)動(dòng)必須進(jìn)行相關(guān)異常處理 演示示例:使用純Java方式連接數(shù)據(jù)庫(kù)練習(xí)使用純Java方式連接數(shù)據(jù)庫(kù)需求說(shuō)明:數(shù)據(jù)庫(kù)為SQL Server 2008數(shù)據(jù)庫(kù)名“epet”,用戶名“jbit”,密碼“bdqn” 使用純Java方式連接該數(shù)據(jù)庫(kù)如果連接成功,輸出“建立連接

10、成功!”,否則輸出“建立連接失??!” 進(jìn)行相關(guān)異常處理完成時(shí)間:20分鐘共性問(wèn)題集中講解常見(jiàn)調(diào)試問(wèn)題及解決辦法代碼規(guī)范問(wèn)題共性問(wèn)題集中講解JDBC應(yīng)用對(duì)寵物和主人信息進(jìn)行管理:寵物和主人信息存儲(chǔ)在SQL Server 2008中通過(guò)JDBC對(duì)寵物和主人進(jìn)行增、刪、改、查字段名字段說(shuō)明字段類型其 他id序號(hào)int主鍵、自增name昵稱varchar(12)health健康值intlove親密度intstrain品種varchar(20)字段名字段說(shuō)明字段類型其 他id序號(hào)int主鍵、自增name姓名varchar(12)password密碼varchar(20)money元寶數(shù)int使用Stat

11、ement添加寵物 Connection conn = null;Statement stmt = null;/ 建立連接conn = DriverManager.getConnection( jdbc:sqlserver:/localhost:1433;DatabaseName=epet, jbit, bdqn);/ 插入狗狗信息到數(shù)據(jù)庫(kù)stmt = conn.createStatement();StringBuffer sbSql = new StringBuffer(insert into dog (name,health,love,strain) values ( );sbSql.ap

12、pend(name + ,);sbSql.append(health + ,);sbSql.append(love + ,);sbSql.append(strain + );stmt.execute(sbSql.toString();stmt.close();conn.close();執(zhí)行SQL語(yǔ)句獲取Statement對(duì)象關(guān)閉Statement對(duì)象聲明Statement變量演示示例:使用Statement添加寵物 使用Statement更新寵物 Connection conn = null;Statement stmt = null;/ 建立連接conn = DriverManager.ge

13、tConnection( jdbc:sqlserver:/localhost:1433;DatabaseName=epet, jbit, bdqn);/ 更新狗狗信息到數(shù)據(jù)庫(kù)stmt = conn.createStatement();stmt.executeUpdate(update dog set health=80,love=15 where id=1);stmt.close();conn.close();執(zhí)行SQL語(yǔ)句獲取Statement對(duì)象關(guān)閉Statement對(duì)象聲明Statement變量演示示例:使用Statement更新寵物 使用Statement和ResultSet查詢寵物

14、Connection conn = null;Statement stmt = null;ResultSet rs = null;conn = DriverManager.getConnection( jdbc:sqlserver:/localhost:1433;DatabaseName=epet, jbit, bdqn);/查詢并輸出狗狗信息stmt = conn.createStatement();rs = stmt.executeQuery(select * from dog);System.out.println( tt狗狗信息列表n編號(hào)t姓名t健康值t親密度t品種);while (

15、rs.next() ) System.out.print( rs.getInt(1) +t);System.out.print( rs.getString(2) +t);System.out.print(rs.getInt(health)+ t);System.out.print(rs.getInt(love)+t);System.out.println(rs.getString(strain);rs.close();stmt.close();conn.close();執(zhí)行SQL語(yǔ)句進(jìn)行查詢,結(jié)果賦給結(jié)果集變量rs注意關(guān)閉順序遍歷結(jié)果集,輸出所有狗狗信息 將光標(biāo)向下移動(dòng)一行 可使用列號(hào)或列名標(biāo)

16、識(shí)列ResultSet可以理解一個(gè)二維表,每行代表一條記錄,每列代表一個(gè)字段。并且存在一個(gè)光標(biāo),光標(biāo)所指行為當(dāng)前行 演示示例:使用Statement和ResultSet查詢寵物 Statement常用方法方法名說(shuō) 明ResultSet executeQuery(String sql)執(zhí)行SQL查詢并獲取到ResultSet對(duì)象int executeUpdate(String sql)可以執(zhí)行插入、刪除、更新等操作,返回值是執(zhí)行該操作所影響的行數(shù)boolean execute(String sql) 可以執(zhí)行任意SQL語(yǔ)句,然后獲得一個(gè)布爾值,表示是否返回ResultSetResultSet常用

17、方法方法名說(shuō) 明boolean next()將光標(biāo)從當(dāng)前位置向下移動(dòng)一行boolean previous()游標(biāo)從當(dāng)前位置向上移動(dòng)一行void close()關(guān)閉ResultSet 對(duì)象int getInt(int colIndex)以int形式獲取結(jié)果集當(dāng)前行指定列號(hào)值int getInt(String colLabel)以int形式獲取結(jié)果集當(dāng)前行指定列名值float getFloat(int colIndex)以float形式獲取結(jié)果集當(dāng)前行指定列號(hào)值float getFloat(String colLabel)以float形式獲取結(jié)果集當(dāng)前行指定列名值String getString(

18、int colIndex)以String 形式獲取結(jié)果集當(dāng)前行指定列號(hào)值String getString(String colLabel)以String形式獲取結(jié)果集當(dāng)前行指定列名值講解需求說(shuō)明指導(dǎo)查詢所有寵物主人信息 訓(xùn)練要點(diǎn):Statement接口ResultSet接口 需求說(shuō)明:使用JDBC查詢數(shù)據(jù)表master中所有寵物主人信息并輸出實(shí)現(xiàn)思路:調(diào)用executeQuery(String sql) 查詢主人信息通過(guò)next()和getXxx()方法遍歷結(jié)果集并輸出難點(diǎn)指導(dǎo):遍歷結(jié)果集完成時(shí)間:20分鐘共性問(wèn)題集中講解常見(jiàn)調(diào)試問(wèn)題及解決辦法代碼規(guī)范問(wèn)題共性問(wèn)題集中講解為什么要使用Prepa

19、redStatement使用JDBC完成主人登錄驗(yàn)證功能Connection conn = null;Statement stmt = null;ResultSet rs = null;/ 建立連接conn = DriverManager.getConnection( jdbc:sqlserver:/localhost:1433;DatabaseName=epet, jbit, bdqn);/ 判斷寵物主人登錄是否成功stmt = conn.createStatement();String sql=select * from master where name=+name+ and passw

20、ord=+password+;System.out.println(sql);rs = stmt.executeQuery(sql);if(rs.next()System.out.println(登錄成功,歡迎您!);elseSystem.out.println(登錄失敗,請(qǐng)重新輸入!);stmt.close();conn.close();演示示例:實(shí)現(xiàn)主人登錄驗(yàn)證 PreparedStatement接口 (預(yù)編譯的 SQL 語(yǔ)句) Statement 接口 提高了代碼的可讀性和可維護(hù)性 PreparedStatement 接口繼承 Statement接口PreparedStatement比普通的Statement對(duì)象使用起來(lái)更加靈活,更有效率 PreparedStatement提高了SQL語(yǔ)句執(zhí)行的性能 提高了安全性使用PreparedStatement更新寵物 Connection conn = null;PreparedStatement pstmt = null;/ 建立連接conn = DriverManager.getConnection( jdbc:sqlserver:/localhost:1433;DatabaseName=epet, jbit, bdqn);/ 更新狗狗信息到數(shù)據(jù)庫(kù)Stri

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論