課件第9章jdbc編程_第1頁(yè)
課件第9章jdbc編程_第2頁(yè)
課件第9章jdbc編程_第3頁(yè)
課件第9章jdbc編程_第4頁(yè)
課件第9章jdbc編程_第5頁(yè)
已閱讀5頁(yè),還剩16頁(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)介

第九章JDBC編程【學(xué)習(xí)目標(biāo)】1.學(xué)習(xí)并了解數(shù)據(jù)庫(kù)編程思想。2.掌握J(rèn)ava與數(shù)據(jù)庫(kù)的連接方法。3.掌握利用java.sql包中的類和接口查詢數(shù)據(jù)庫(kù),插入數(shù)據(jù)和更新數(shù)據(jù)庫(kù)中數(shù)據(jù)的方法。4.了解SQL語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)查詢。

9.1JDBC概述一、JDBC設(shè)計(jì)的目的

⑴ODBC:微軟的ODBC是用C編寫(xiě)的,而且只適用于Windows平臺(tái),無(wú)法實(shí)現(xiàn)跨平臺(tái)地操作數(shù)據(jù)庫(kù)。

⑵SQL語(yǔ)言:SQL盡管包含有數(shù)據(jù)定義、數(shù)據(jù)操作、數(shù)據(jù)管理等功能,但它并不是一個(gè)完整的編程語(yǔ)言,而且不支持流控制,需要與其它編程語(yǔ)言相配合使用。

9.1JDBC概述

⑶JDBC的設(shè)計(jì):由于Java語(yǔ)言具有健壯性、安全、易使用并自動(dòng)下載到網(wǎng)絡(luò)等方面的優(yōu)點(diǎn),因此如果采用Java語(yǔ)言來(lái)連接數(shù)據(jù)庫(kù),將能克服ODBC局限于某一系統(tǒng)平臺(tái)的缺陷;將SQL語(yǔ)言與Java語(yǔ)言相互結(jié)合起來(lái),可以實(shí)現(xiàn)連接不同數(shù)據(jù)庫(kù)系統(tǒng),即使用JDBC可以很容易地把SQL語(yǔ)句傳送到任何關(guān)系型數(shù)據(jù)庫(kù)中。

⑷JDBC設(shè)計(jì)的目的:它是一種規(guī)范,設(shè)計(jì)出它的最主要的目的是讓各個(gè)數(shù)據(jù)庫(kù)開(kāi)發(fā)商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)訪問(wèn)類和接口,使得獨(dú)立于DBMS的Java應(yīng)用程序的開(kāi)發(fā)成為可能(數(shù)據(jù)庫(kù)改變,驅(qū)動(dòng)程序跟著改變,但應(yīng)用程序不變)。二、JDBC的主要功能

⑴創(chuàng)建與數(shù)據(jù)庫(kù)的連接;

⑵發(fā)送SQL語(yǔ)句到任何關(guān)系型數(shù)據(jù)庫(kù)中;

⑶處理數(shù)據(jù)并查詢結(jié)果。三、JDBC與ODBC的對(duì)比

⑴ODBC是用C語(yǔ)言編寫(xiě)的,不是面向?qū)ο蟮?;而JDBC是用Java編寫(xiě)的,是面向?qū)ο蟮摹?/p>

⑵ODBC難以學(xué)習(xí),因?yàn)樗押?jiǎn)單的功能與高級(jí)功能組合在一起,即便是簡(jiǎn)單的查詢也會(huì)帶有復(fù)雜的任選項(xiàng);而JDBC的設(shè)計(jì)使得簡(jiǎn)單的事情用簡(jiǎn)單的做法來(lái)完成。

⑶ODBC是局限于某一系統(tǒng)平臺(tái)的,而JDBC提供Java與平臺(tái)無(wú)關(guān)的解決方案。

⑷但也可以通過(guò)Java來(lái)操作ODBC,這可以采用JDBC-ODBC橋接方式來(lái)實(shí)現(xiàn)(因?yàn)镴ava不能直接使用ODBC,即在Java中使用本地C的代碼將帶來(lái)安全缺陷)。四、JDBC驅(qū)動(dòng)程序的類型

1.JDBC-ODBC橋加ODBC驅(qū)動(dòng)程序2.本地API3.JDBC網(wǎng)絡(luò)純Java驅(qū)動(dòng)程序4.本地協(xié)議純Java驅(qū)動(dòng)程序9.2JDBC的工作原理9.2.1JDBC的結(jié)構(gòu)

JDBC主要包含兩部分:面向Java程序員的JDBCAPI及面向數(shù)據(jù)庫(kù)廠商的JDBCDriveAPI。

面向Java程序員的JDBCAPI:Java程序員通過(guò)調(diào)用此API從而實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)、執(zhí)行SQL語(yǔ)句并返回結(jié)果集等編程數(shù)據(jù)庫(kù)的能力,它主要是由一系列的接口定義所構(gòu)成。這些接口基本都包含在包java.sql.*中。

①java.sql.DriveManager:該接口主要定義了用來(lái)處理裝載驅(qū)動(dòng)程序并且為創(chuàng)建新的數(shù)據(jù)庫(kù)連接提供支持。

9.2JDBC的工作原理9.2.1JDBC的結(jié)構(gòu)

②java.sql.Connection:該接口主要定義了實(shí)現(xiàn)對(duì)某一種指定數(shù)據(jù)庫(kù)連接的功能。

③java.sql.Statement:該接口主要定義了在一個(gè)給定的連接中作為SQL語(yǔ)句執(zhí)行聲明的容器以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。它主要包含有如下的兩種子類型。

④java.sql.PreparedStatement:該接口主要定義了用于執(zhí)行帶或不帶IN參數(shù)的預(yù)編譯SQL語(yǔ)句。

⑤java.sql.CallableStatement:該接口主要定義了用于執(zhí)行數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程的雕用。

java.sql.ResultSet:該接口主要定義了用于執(zhí)行對(duì)數(shù)據(jù)庫(kù)的操作所返回的結(jié)果集。9.2.2常用的JDBC類與方法1.DriverManage類2.Connection類3.Statement類4.PreparedStatement類

9.3數(shù)據(jù)庫(kù)操作在Java應(yīng)用中要對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,必須把數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句發(fā)送給DBMS。所以在進(jìn)行數(shù)據(jù)庫(kù)操作前,我們需要學(xué)習(xí)SQL語(yǔ)句。9.3.1SQL查詢查詢是數(shù)據(jù)庫(kù)中進(jìn)行的主要操作。SQL語(yǔ)言的核心也是數(shù)據(jù)庫(kù)查詢語(yǔ)句。語(yǔ)句的一般格式如下:select目標(biāo)列1,目標(biāo)列2···目標(biāo)列nfor表名where條件表達(dá)式groupby列名1having條件orderby列名2ASC/DESC9.3數(shù)據(jù)庫(kù)操作例9.1全體學(xué)生的詳細(xì)信息。select學(xué)號(hào),姓名,性別,生日,系別fromstudent【程序分析】這是最簡(jiǎn)單的查詢語(yǔ)句,學(xué)生的基本信息存放在student表中,學(xué)生的全部信息包含了student中的所有列。當(dāng)要查詢表中的所有列的信息,可以用“*”來(lái)代替。上面程序等價(jià)于:select*fromstudent。例9.2求數(shù)學(xué)系學(xué)生的姓名。select姓名fromstudentwhere系別=“數(shù)學(xué)”9.3.2向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句例9.16查看所有學(xué)生的信息。//應(yīng)用程序,文件名為example9_16.javaimportjava.sql.*;publicclassexample9_16{publicstaticvoidmain(Stringargs[]){Connectioncon;Statementsql;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione){System.out.println(e);}try{con=DriverManager.getConnection("jdbc:odbc:MydataSource","la","1234");sql=con.createStatement();sql.executeQuery("SELECT*FROMstudent");}catch(SQLExceptione){

System.out.print(e);}}}9.3.3處理SQL執(zhí)行結(jié)果

例9.17顯示所有同學(xué)的信息。//文件名Example9_17.javaimportjava.sql.*;publicclassExample9_17{publicstaticvoidmain(Stringargs[]){Connectioncon;Statementsql;ResultSetrs;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}catch(ClassNotFoundExceptione){System.out.println(e);}try{con=DriverManager.getConnection("jdbc:odbc:MydataSource","la","1234");9.3.3處理SQL執(zhí)行結(jié)果

sql=con.createStatement();rs=sql.executeQuery("SELECT*FROMstudent");while(rs.next()){Stringxuehao=rs.getString(1);Stringxingming=rs.getString(2);Stringxingbie=rs.getString(3);Dateshengri=rs.getDate(4);System.out.println("學(xué)號(hào):"+xuehao);System.out.println("姓名"+xingming);System.out.println("性別"+xingbie);System.out.println("生日:"+shengri);}con.close();}catch(SQLExceptione){System.out.print(e);}}}9.3.4處理帶參數(shù)的查詢對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的簡(jiǎn)單查詢和更新操作,我們可以通過(guò)Statement對(duì)象發(fā)送給DBMS進(jìn)行處理。但在很多應(yīng)用中,要查詢的內(nèi)容或更新的內(nèi)容是在運(yùn)行時(shí)由用戶輸入來(lái)確定的。此時(shí),在編寫(xiě)應(yīng)用程序中,就不能確定SQL語(yǔ)句中有些項(xiàng)的值。像這樣的查詢,Java提供了一個(gè)PreparedStatement對(duì)象來(lái)處理。PreparedStatement對(duì)象允許執(zhí)行帶參數(shù)化的查詢,如:select*fromstudentwhere學(xué)號(hào)=?9.3.4處理帶參數(shù)的查詢用Connection對(duì)象的prepareStatement()方法來(lái)創(chuàng)建PreparedStatement對(duì)象。方法如下:Stringurl=“jdbc:odbc:MydataSource”;Connnectioncon=DriverManager.getConnection(“url”,”la”,”1234”);PreparedStatementstat;Strings=”select*formstudentwhere學(xué)號(hào)=?”;stat=con.prepareStatement(s);在執(zhí)行PreparedStatement對(duì)象之前,必須設(shè)置每個(gè)?參數(shù)的值??梢酝ㄟ^(guò)調(diào)用PreparedStatement對(duì)象的set×××()方法來(lái)設(shè)置,這里的×××是參數(shù)的數(shù)據(jù)類型。例如:stat.setString(1,textnum.getText());從textnum文本框中用戶輸入的內(nèi)容來(lái)設(shè)置參數(shù)值。PreparedStatement對(duì)象也使用executeQuery()方法和executeUpdate()方法來(lái)獲得執(zhí)行。9.4項(xiàng)目拓展1.設(shè)計(jì)目標(biāo)及完成功能設(shè)計(jì)一個(gè)發(fā)音電子詞典,具有對(duì)英語(yǔ)單詞的查詢、添加、修改、刪除和讀音功能。(1).主界面(2).窗口功能說(shuō)明窗口共分3個(gè)主要部分:菜單欄、工具條、顯示欄。主菜單:包括文件、編輯、幫助菜單。工具條:包括輸入欄和查詢、添加、修改、刪除、發(fā)聲按鈕。顯示欄:顯示查詢單詞在詞典中的所有解釋。9.4項(xiàng)目拓展(3).菜單欄說(shuō)明文件菜單:包括英漢詞典、漢英詞典、備份詞庫(kù)、退出功能。編輯菜單:包括添加詞匯、修改詞匯、刪除詞匯功能。幫助菜單:關(guān)于該軟件的一些信息。(4).工具欄說(shuō)明在向輸入欄中輸入英/中文單詞,單擊“查詢”按鈕,在顯示欄中將會(huì)顯示查找所對(duì)應(yīng)詞典中的所有解釋?!鞍l(fā)音”按鈕:發(fā)音純正標(biāo)準(zhǔn)。方便用戶更好地記憶朗讀單詞。添加、修改、刪除按鈕:可由用戶自行添加、修改和刪除詞庫(kù)中的詞匯。(5).顯示欄說(shuō)明顯示用戶所查詢的詞義。右擊可出現(xiàn)復(fù)制、粘貼等命令,方便用戶復(fù)制到其他地方進(jìn)行其他如打印、學(xué)習(xí)等操作。2.詳細(xì)設(shè)計(jì)(1)系統(tǒng)共有6個(gè)類:系統(tǒng)運(yùn)行主類:Dic.java窗口主界面類:DataWindow添加單詞類:AddWin.java修改單詞類:ModifyWin.java刪除單詞類:DelWin.java使用幫助類:HelpFrame.java另外,每個(gè)單詞均錄制一個(gè)語(yǔ)音文件,保存到sound目錄下。(2)系統(tǒng)運(yùn)行主類Dic的方法如表9-2所示。(3)窗口主界面類

溫馨提示

  • 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)論