版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十三章JDBC基礎(chǔ)知識(shí)回顧JTable的用途如何使用JTableJTree的用途如何使用JTree2本章目標(biāo)了解JDBC的概念及必要性了解JDBC驅(qū)動(dòng)程序類型理解JDBC程序的結(jié)構(gòu)運(yùn)用JDBC進(jìn)行數(shù)據(jù)庫編程
3數(shù)據(jù)庫訪問技術(shù)簡(jiǎn)介
客戶機(jī)/服務(wù)器應(yīng)用程序數(shù)據(jù)庫編程ODBCJDBC兩個(gè)常用的API數(shù)據(jù)庫執(zhí)行SQL語句檢索查詢結(jié)果4數(shù)據(jù)庫ODBC客戶機(jī)/服務(wù)器GUI應(yīng)用程序ODBC(開放式數(shù)據(jù)庫連接)(Microsoft提供)插入刪除修改應(yīng)用程序編程接口查詢5JDBCJDBC(Java數(shù)據(jù)庫連接)(sun公司提供)Java應(yīng)用程序編程接口Java應(yīng)用程序數(shù)據(jù)庫插入修改刪除查詢6JDBC驅(qū)動(dòng)程序的類型JDBC驅(qū)動(dòng)程序的類型JDBC-ODBC橋驅(qū)動(dòng)程序及ODBC驅(qū)動(dòng)程序本地API部分Java驅(qū)動(dòng)程序JDBC-Net純Java驅(qū)動(dòng)程序本地協(xié)議純Java驅(qū)動(dòng)程序7
JDBC體系結(jié)構(gòu)2-1Java程序JDBC驅(qū)動(dòng)程序數(shù)據(jù)庫SQL命令結(jié)果8JDBC體系結(jié)構(gòu)2-2應(yīng)用層Driver
StatementResultSet
Connection
各接口驅(qū)動(dòng)層9java.sql包3-1接口名說明
Connection此接口表示與數(shù)據(jù)的連接PreparedStatement此接口用于執(zhí)行預(yù)編譯的SQL語句
ResultSet此接口表示了查詢出來的數(shù)據(jù)庫數(shù)據(jù)結(jié)果集Statement此接口用于執(zhí)行SQL語句并將數(shù)據(jù)檢索到ResultSet中
10java.sql包包3-2類名說明
DriverManager此類用于加載和卸載各種驅(qū)動(dòng)程序并建立與數(shù)據(jù)庫的連接Date此類包含將SQL日期格式轉(zhuǎn)換成Java日期格式的各種方法Time此類用于表示時(shí)間TimeStamp此類通過添加納秒字段為時(shí)間提供更高的精確度
11java.sql包包3-3SQLException/***fooBar*/publicvoidfoobar()throwsSQLException{……thrownewSQLException(“剛引引發(fā)了一個(gè)SQLException”);}……try{fooBar();}catch(SQLExceptionex){System.out.println(“已已捕獲一個(gè)SQLException異常常!”);System.out.println(“消消息:“+ex.getMessage());System.out.println(“錯(cuò)錯(cuò)誤代碼:““+ex.getErrorCode());}…調(diào)用fooBar12JDBC程程序訪問數(shù)據(jù)庫的的步驟2-1開始導(dǎo)入java.sql包加載并注冊(cè)驅(qū)驅(qū)動(dòng)程序創(chuàng)建一個(gè)Connection對(duì)對(duì)象創(chuàng)建一個(gè)Statement對(duì)象象執(zhí)行語句關(guān)閉ResultSet對(duì)對(duì)象關(guān)閉Statement對(duì)象象關(guān)閉連接結(jié)束使用ResultSet對(duì)象象13Friends表的結(jié)結(jié)構(gòu)JDBC程程序訪問數(shù)據(jù)庫的的步驟2-2它演示訪問數(shù)數(shù)據(jù)庫的各個(gè)個(gè)步驟在執(zhí)行示例1中的程程序之前,SQLServer中中應(yīng)該存在在一個(gè)名為friends的的表演示:示例例1列名稱數(shù)據(jù)類型名稱
Varchar(50)地址Varchar(50)電話Numeric入職日期Datetime工資Numeric/**??2005AptechLimited*版權(quán)所所有*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;/**這這個(gè)類演示示訪問數(shù)據(jù)據(jù)庫需遵循循的各個(gè)步步驟.*@version1.0,2005年年8月月26日*@authorBen*/classJdbctest{/**構(gòu)構(gòu)造方法*/protectedJdbctest(){}/**這是是main方法法.*/publicstaticvoidmain(String[]args){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptionce){System.out.println(ce);}try{Stringurl="jdbc:odbc:test";Connectioncon=DriverManager.getConnection(url);Statements=con.createStatement();ResultSetrs=s.executeQuery("select*fromfriends");while(rs.next()){System.out.print(rs.getString(1)+"\t");System.out.print(rs.getString(2)+"\t");System.out.print(rs.getInt(3)+"\t");System.out.print(rs.getDate(4)+"\t");System.out.println("");}rs.close();s.close();con.close();}catch(SQLExceptionce){System.out.println(ce);}}}14JDBC查查詢2-1SQL查詢?cè)冏址甧xecuteQuery()方方法作為參數(shù)傳遞遞ResultSet返回查詢數(shù)據(jù)據(jù)SELECTname,email,phoneFROMcolleagues;使用SQL語句,查查詢可編寫為為:Stringstr="SELECTemp_id,lname,fnameFROMcolleagues";Statementstmt=con.createStatement();ResultSetrset=stmt.executeQuery(str);使用JDBC編寫此此查詢,則代代碼為:Statement接口口15JDBC查查詢2-2它演示SQL中sum()方法的用用法演示:示例2/***Jdbctest2*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;/**這個(gè)個(gè)類演示SQL中sum()方法的用用法*@version1.0,2005年年8月月26日日*@authorBen*/classJdbctest2{/**構(gòu)造造方法*/protectedJdbctest2(){}/**這是是main方法*/publicstaticvoidmain(String[]args){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptionce){System.out.println(ce);}try{Stringurl="jdbc:odbc:test";Connectioncon=DriverManager.getConnection(url);Statements=con.createStatement();ResultSetrs=s.executeQuery("selecthiredate,sum(salary)fromfriendsgroupbyhiredate");while(rs.next()){System.out.print(rs.getDate(1)+"\t");System.out.print(rs.getInt(2)+"\t");System.out.println("");}rs.close;s.close();con.close();}catch(SQLExceptionce){System.out.println(ce);}}}16演示:示例3它演示SQL中INSERT語句的用用法/***Jdbctest3*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;/**這個(gè)個(gè)類演示INSERT語句的用用法.*@version1.0,2005年年8月月26日日*@authorBen*/classJdbctest3{/**構(gòu)造造方法*/protectedJdbctest3(){}JDBC插插入數(shù)據(jù)實(shí)現(xiàn)現(xiàn)/**這是是main方法*/publicstaticvoidmain(String[]args){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptionce){System.out.println(ce);}try{Stringurl="jdbc:odbc:test";Stringstr="INSERTINTO““+friends(name,address,salary)“+"VALUES(‘‘朱八‘,’’深圳‘,25690)";Connectioncon=DriverManager.getConnection(url);Statements=con.createStatement();introwcount=s.executeUpdate(str);Stringstr1="selectname,sum(salary)““+fromfriends"+"groupbyname";ResultSetrs=s.executeQuery(str1);while(rs.next()){System.out.print(rs.getString(1)+"\t");System.out.print(rs.getInt(2)+"\t");System.out.println("");}rs.close();s.close();con.close();}catch(SQLExceptionce){System.out.println(ce);}}}17JDBC刪刪除和修改實(shí)實(shí)現(xiàn)它演示SQL中各種種命令的用法法演示:示例4/***Jdbc2*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;/**這這這個(gè)類演示SQL中命令的用法法.*@version1.0,2005年8月26日*@authorBen*/classJdbc2{/**構(gòu)造造方法.*/protectedJdbc2(){}publicstaticvoidmain(String[]args){Connectioncon;Statementstmt;Stringurl;Stringsql;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptionce){System.out.println(ce);}try{url="jdbc:odbc:test";con=DriverManager.getConnection(url);sql="Deletefromfriendswherertrim(name)like\'張三\';";System.out.println("");stmt=con.createStatement();stmt.executeUpdate(sql);System.out.println("張三的記錄錄已刪除“);stmt.close();con.close();con=DriverManager.getConnection(url);sql="Updatefriendssetaddress=\'青島\'where“+"rtrim(name)like\'李四\';";System.out.println("");stmt=con.createStatement();stmt.executeUpdate(sql);stmt.close();con.close();System.out.println("李李四的記錄已已更新");}catch(SQLExceptionce){System.out.println(ce);}}}18PreparedStatement接口3-1PreparedStatement接口(預(yù)編譯的SQL語語句)PreparedStatement用于提高運(yùn)行行時(shí)效率執(zhí)行PreparedStatement對(duì)象比執(zhí)行Statement對(duì)對(duì)象快Statement接接口19PreparedStatement接口3-2它演示了PreparedStatement的用法演示:示例5/**?*CourseAppl*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;importjava.sql.PreparedStatement;/**這個(gè)個(gè)類演示SQL中PreparedStatement的用用法*/classCourseAppl{privateConnectioncon;privateStringurl;privateStringserverName;privateStringportNumber;privateStringdatabaseName;privateStringuserName;privateStringpassword;privateStringsql;CourseAppl(){url="jdbc:microsoft:sqlserver://";serverName=“l(fā)ocalhost";portNumber="1433";databaseName=““test";userName=““sa";password=““sa";}privateStringgetConnectionUrl(){returnurl+serverName+":"+portNumber+";databaseName="+databaseName+";";}privatejava.sql.ConnectiongetConnection(){try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");con=DriverManager.getConnection(getConnectionUrl(),userName,password);if(con!=null){System.out.println("連連接成功!");}}catch(Exceptione){e.printStackTrace();System.out.println("getConnection()內(nèi)內(nèi)的錯(cuò)誤跟跟蹤:"+e.getMessage());}returncon;}publicvoiddisplay(){try{con=getConnection();PreparedStatementpstmt=con.prepareStatement("UPDATEfriendsSETsalary=?WHEREnamelike?");pstmt.setInt(1,10000);pstmt.setString(2,"李李四");pstmt.executeUpdate();System.out.println(“記記錄已更新!");Statements=con.createStatement();Stringsql="SELECT*FROMfriends";ResultSetrs=s.executeQuery(sql);while(rs.next()){System.out.println("");System.out.print(rs.getInt(1)+"");System.out.println(rs.getInt(5));}}catch(SQLExceptionce){System.out.println(ce);}}publicstaticvoidmain(String[]args){CourseApplretObj=newCourseAppl();retObj.display();}}20PreparedStatement
接口口3-3它演示在基于于條件的SQL查詢?cè)冎腥绾问褂糜肞reparedStatement,其其中條件在IN參數(shù)數(shù)中給出演示:示例6importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.PreparedStatement;/**這個(gè)個(gè)類演示在基基于條件的SQL查查詢中使用PreparedStatement*/classRetrieveRecords{privateConnectioncon;privateStringurl;privateStringserverName,portNumber,databaseName,userName;privateStringsql;RetrieveRecords(){url="jdbc:microsoft:sqlserver://";serverName=“l(fā)ocalhost";portNumber="1433";databaseName=““test";userName=““sa";password=““sa";}privateStringgetConnectionUrl(){returnurl+serverName+":"+portNumber+";databaseName="+databaseName+";";}privatejava.sql.ConnectiongetConnection(){try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");con=DriverManager.getConnection(getConnectionUrl(),userName,password);if(con!=null){System.out.println("連連接成功!");}}catch(Exceptione){e.printStackTrace();System.out.println(“getConnection()內(nèi)內(nèi)的錯(cuò)誤跟跟蹤:"+e.getMessage());}returncon;}publicvoiddisplay(){try{con=getConnection();sql="select*fromFriendswhereSalary>?";PreparedStatementpstmt=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);pstmt.setInt(1,5000);ResultSetrs=pstmt.executeQuery();while(rs.next()){System.out.print(rs.getString(1)+"\t");System.out.print(rs.getString(2)+"\t");System.out.print(rs.getInt(3)+"\t");System.out.print(rs.getDate(4)+"\t");System.out.print(rs.getInt(5)+"\t");System.out.println("");}rs.close();pstmt.close();con.close();}catch(SQLExceptionce){System.out.println(ce);}}/**這這是是main方方法法*/publicstaticvoidmain(String[]args){RetrieveRecordsretRec=newRetrieveRecords();retRec.display();}}21使用用結(jié)結(jié)果果集集3-1ResultSet對(duì)對(duì)象象完完全全依依賴賴于于Statement對(duì)對(duì)象象和和Connection對(duì)象象每次次執(zhí)執(zhí)行行SQL語語句句時(shí)時(shí),,都都會(huì)會(huì)用用新新的的結(jié)結(jié)果果重重寫寫結(jié)結(jié)果果集集當(dāng)相相關(guān)關(guān)的的Statement關(guān)關(guān)閉閉時(shí)時(shí),,ResultSet對(duì)對(duì)象象會(huì)會(huì)自自動(dòng)動(dòng)關(guān)關(guān)閉閉Next()get<Type>()此方方法法將將光光標(biāo)標(biāo)從從當(dāng)前前位位置置下下移移一一行行從ResultSet對(duì)象象返返回回?cái)?shù)數(shù)據(jù)據(jù)22使用用結(jié)結(jié)果果集集3-2它演演示示對(duì)對(duì)當(dāng)當(dāng)前前行行的的處處理理使用用next()方方法法時(shí)時(shí),,記記錄錄是是按按順順序序處處理理的的必須須按按照照數(shù)數(shù)據(jù)據(jù)返返回回的的順順序序處處理理每每行行中中的的數(shù)數(shù)據(jù)據(jù)…ResultSetrset=stmt.getResultSet();while(rset.next()){Stringdept_name=rset.getString(1);}…23使用用結(jié)結(jié)果果集集3-3演示示對(duì)對(duì)當(dāng)當(dāng)前前列列的的處處理理使用用get<Type>()方法法可可以以直直接接訪訪問問列
溫馨提示
- 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年度水陸聯(lián)運(yùn)貨物保險(xiǎn)及運(yùn)輸合同
- 二零二五年度新能源儲(chǔ)能技術(shù)聘用合同8篇
- 二零二四年度信息化設(shè)備融資租賃管理合同3篇
- 課件:正確認(rèn)識(shí)高職院校內(nèi)部質(zhì)量保證體系診斷與改進(jìn)
- 二零二五年度牧草生物質(zhì)能項(xiàng)目合作協(xié)議4篇
- 2025版農(nóng)家樂民宿租賃管理服務(wù)合同2篇
- 二零二五版年薪制勞動(dòng)合同:房地產(chǎn)企業(yè)銷售精英激勵(lì)方案4篇
- 第三單元 資產(chǎn)階級(jí)民主革命與中華民國(guó)的建立(解析版)- 2023-2024學(xué)年八年級(jí)歷史上學(xué)期期中考點(diǎn)大串講(部編版)
- 2025年度個(gè)人家政服務(wù)分期支付合同范本2篇
- 二零二五年度地鐵車站安全門系統(tǒng)采購合同
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫含答案解析
- 人教版初中語文2022-2024年三年中考真題匯編-學(xué)生版-專題08 古詩詞名篇名句默寫
- 2024-2025學(xué)年人教版(2024)七年級(jí)(上)數(shù)學(xué)寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- ESG表現(xiàn)對(duì)企業(yè)財(cái)務(wù)績(jī)效的影響研究
- 醫(yī)療行業(yè)軟件系統(tǒng)應(yīng)急預(yù)案
- 使用錯(cuò)誤評(píng)估報(bào)告(可用性工程)模版
- 《精密板料矯平機(jī) 第2部分:技術(shù)規(guī)范》
- 黑枸杞生物原液應(yīng)用及產(chǎn)業(yè)化項(xiàng)目可行性研究報(bào)告
- 2024年黑龍江省政工師理論知識(shí)考試參考題庫(含答案)
- 四年級(jí)上冊(cè)脫式計(jì)算300題及答案
評(píng)論
0/150
提交評(píng)論