Java程序設(shè)計(jì)PPT課件版 第十一章 Java數(shù)據(jù)庫(kù)編程技術(shù)_第1頁(yè)
Java程序設(shè)計(jì)PPT課件版 第十一章 Java數(shù)據(jù)庫(kù)編程技術(shù)_第2頁(yè)
Java程序設(shè)計(jì)PPT課件版 第十一章 Java數(shù)據(jù)庫(kù)編程技術(shù)_第3頁(yè)
Java程序設(shè)計(jì)PPT課件版 第十一章 Java數(shù)據(jù)庫(kù)編程技術(shù)_第4頁(yè)
Java程序設(shè)計(jì)PPT課件版 第十一章 Java數(shù)據(jù)庫(kù)編程技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(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頁(yè)第十一章JDBC數(shù)據(jù)庫(kù)編程技術(shù)*第2頁(yè)知識(shí)點(diǎn):了解常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)熟悉JDBC的工作原理,掌握J(rèn)DBC操作數(shù)據(jù)庫(kù)所用到的類的使用方法掌握J(rèn)DBC開(kāi)發(fā)數(shù)據(jù)庫(kù)的工作步驟*第3頁(yè)本章主要介紹以下5個(gè)部分的內(nèi)容:1.關(guān)系數(shù)據(jù)庫(kù)簡(jiǎn)介2.JDBC基礎(chǔ)3.主要JDBC類4.JDBC編程工作步驟5.實(shí)例*第4頁(yè)一、關(guān)系數(shù)據(jù)庫(kù)簡(jiǎn)介(1)關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)有哪些?一個(gè)數(shù)據(jù)庫(kù)由一個(gè)或多個(gè)表組成,每個(gè)表由行,列組成,列代表字段(即屬性),行代表記錄.表中的記錄是唯一的,主關(guān)鍵字唯一。(2)對(duì)關(guān)系數(shù)據(jù)庫(kù)的操作有哪些? 搜索(查找) 添加,插入,刪除記錄 更新記錄 投影和連接操作*第5頁(yè)(3)SQL語(yǔ)句(1)SELECT[ALL|DISTINCT|DISTINCTROW|TOP]

{*|talbe.*|[table.]field1[ASalias1][,[table.]field2[ASalias2][,…]]}

FROMtableexpression[,…][INexternaldatabase]

[WHERE…]

(2)更新數(shù)據(jù)語(yǔ)法:

UPDATE表名

SET新值

WHERE條件

(3)DELETE子句的語(yǔ)法:

DELETE[表名.*]

FROM來(lái)源表

WHERE條件(4)INSERT子句的語(yǔ)法:

INSETRINTO目的表或查詢(字段1,字段2,…)

values(數(shù)值1,數(shù)值2,…)*第6頁(yè)二、JDBC基礎(chǔ)

JDBC是為Java提供的一個(gè)平臺(tái)無(wú)關(guān)的數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)API,它提供了一個(gè)通用的SQL數(shù)據(jù)庫(kù)存取機(jī)制,該機(jī)制為多數(shù)關(guān)系型DBMS提供統(tǒng)一接口。JDBC分為JDBCAPI與JDBC驅(qū)動(dòng)程序。前者即一組JDBC類庫(kù),使用這個(gè)類庫(kù)可以以一種標(biāo)準(zhǔn)的方法、方便地訪問(wèn)數(shù)據(jù)庫(kù)資源(在java.sql類包中)。JDBC為訪問(wèn)不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一的途徑,象ODBC(OpenDatabaseConnectivity)一樣,JDBC對(duì)開(kāi)發(fā)者屏蔽了一些細(xì)節(jié)問(wèn)題。*第7頁(yè)二、JDBC基礎(chǔ)

JDBC包含一系列豐富的類,在java.sql包中(JDK.1.1以上).JDBC提供了一種API實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)透明存取的方法,這種存取依據(jù)驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn),不同的數(shù)據(jù)庫(kù)制造尚提供它們不同的驅(qū)動(dòng)程序.JDBC的目標(biāo)是使應(yīng)用程序開(kāi)發(fā)人員使用JDBC可以連接任何提供了JDBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)系統(tǒng),這樣就使得程序員無(wú)需對(duì)特定的數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)有過(guò)多的了解,從而大大簡(jiǎn)化和加快了開(kāi)發(fā)過(guò)程。*第8頁(yè)與ODBC相類似,JDBC接口(API)也包括兩個(gè)層次:

面向應(yīng)用的API:JavaAPI,抽象接口,供應(yīng)用程序開(kāi)發(fā)人員使用(連接數(shù)據(jù)庫(kù),執(zhí)行SQL語(yǔ)句,獲得結(jié)果)。

面向數(shù)據(jù)庫(kù)的API:JavaDriverAPI,供開(kāi)發(fā)商開(kāi)發(fā)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序用。與ODBC相比,JDBC沒(méi)有了定制的“數(shù)據(jù)源”的概念,而是直接在應(yīng)用程序中加載驅(qū)動(dòng)程序并連接特定的數(shù)據(jù)庫(kù)。二、JDBC基礎(chǔ)*第9頁(yè)三、主要JDBC類(1)Driver類:用來(lái)與數(shù)據(jù)庫(kù)通信的軟件.(2)DriverManager類:是JDBC基礎(chǔ),用來(lái)管理和卸載JDBC驅(qū)動(dòng)程序.該類有一個(gè)getConnection()方法,用于驗(yàn)證JDBC數(shù)據(jù)源,并返回Connection對(duì)象.(3)Connection類:該類的CreateStatement()方法連接JDBC數(shù)據(jù)源,返回Statement對(duì)象.(4)Statement類:將SQL行為封裝起來(lái)交給數(shù)據(jù)庫(kù)引擎,調(diào)用該類的execute(),executeQuery(),executeUpdate()等方法,執(zhí)行SQL語(yǔ)句,返回resultSet對(duì)象.(5)ResultSet類:封裝了一個(gè)由SQL查詢返回的結(jié)果.該類的getString(),getInt()等方法獲得一欄數(shù)據(jù)的存取,next()方法到下一行.*第10頁(yè)四、JDBC編程工作步驟任何一個(gè)JDBC應(yīng)用程序,都需要以下四個(gè)步驟:加載JDBC驅(qū)動(dòng)程序建立與數(shù)據(jù)庫(kù)的連接進(jìn)行數(shù)據(jù)庫(kù)操作數(shù)據(jù)集結(jié)果分析關(guān)閉相關(guān)連接*第11頁(yè)1、加載JDBC驅(qū)動(dòng)程序在應(yīng)用程序中,有三種方法可以加載驅(qū)動(dòng)程序:利用System類的靜態(tài)方法setProperty()System.setProperty(“jdbc.drivers”,“sun.jdbc.odbc.JdbcOdbcDriver”);

利用Class類的靜態(tài)方法forName()Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Class.forName(“oracle.jdbc.driver.OracleDriver”);

直接創(chuàng)建一個(gè)驅(qū)動(dòng)程序?qū)ο髇ew

sun.jdbc.odbc.JdbcOdbcDriver();*第12頁(yè)2、建立與數(shù)據(jù)庫(kù)的連接利用DriverManager類的靜態(tài)方法getConnection()來(lái)獲得與特定數(shù)據(jù)庫(kù)的連接實(shí)例(Connection實(shí)例)。Connectionconn=DriverManager.getConnection(source,user,pass);

這三個(gè)參數(shù)都是String類型的,使用不同的驅(qū)動(dòng)程序與不同的數(shù)據(jù)庫(kù)建立連接時(shí),source的內(nèi)容是不同的,但其格式是一致的,都包括三個(gè)部分:jdbc:subprotocol:subname

對(duì)于JDBC-ODBCBridge,subprotocol(子協(xié)議)為odbc,subname(子名字)則為數(shù)據(jù)源:“jdbc:odbc:myDSN”。

對(duì)于其他類型的驅(qū)動(dòng)程序,根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)的不同subprotocol和subname有不同的格式和內(nèi)容。*第13頁(yè)3、進(jìn)行數(shù)據(jù)庫(kù)操作每執(zhí)行一條SQL語(yǔ)句,都需要利用Connetcion實(shí)例conn的createStatement()方法來(lái)創(chuàng)建一個(gè)Statement實(shí)例。 Statementmystmt=conn.CreateStatement();Statement的常用方法包括:執(zhí)行SQL:INSERT,UPDATE或DELETE等語(yǔ)句intexecuteUpdate(Stringsql)執(zhí)行SQL:SELECT語(yǔ)句ResultSetexecuteQuery(Stringsql)Statement中還有其他的方法來(lái)執(zhí)行SQL語(yǔ)句。*第14頁(yè)4、數(shù)據(jù)集結(jié)果分析一旦執(zhí)行了SELECT語(yǔ)句,ResultSet對(duì)象rs就包含了滿足SQL語(yǔ)句條件的所有行。使用rs.next()方法可以下移rs中的行。在行中取得數(shù)據(jù)可以通過(guò)rs.get中的多種方法實(shí)現(xiàn)。例如,假定有一個(gè)表emps,其中存儲(chǔ)了具有name,age等多個(gè)字段的多個(gè)記錄。如果執(zhí)行了查詢Select*fromemps,則下面的代就可以說(shuō)明如何獲得結(jié)果:ResultSetrs=stmt.execteQuery("Select*fromemps");While(rs.next()){Stringfl=rs.getString(1);//第一列的值<=>rs.getString(“name”)intf2=rs.getInt(2);//第一列的值<=>rs.getString(“age”)floatf3=rs.getFloat(3);intf4=getInt(4);}*第15頁(yè)5、關(guān)閉連接mystmt.close();//關(guān)閉對(duì)象(SQL語(yǔ)句對(duì)象)rs.close();//關(guān)閉對(duì)象(結(jié)果集對(duì)象)con.close();//關(guān)閉連接*第16頁(yè)6、整體格式importjava.sql.*;publicclassJDBCExample{Connectionmyconn;Statementmystmt;ResultSetmyrs;publicstaticvoidmain(Stringargs[]){try{Class.forname(“xxxxxx”);//驅(qū)動(dòng)程序名//sun.jdbc.odbc.JdbcOdbcDriver}Catch(ClassNotFoundExceptione){……}*第17頁(yè)try{myconn=DriverManager.getConnection(“數(shù)據(jù)源”,UN,PW);mystmt=myconn.CreateStatement();mystmt.executeUpdate(“insertintoxxx(…,…)values(…,…)”);myrs=mystmt.executeQuery(“select*fromxxx”);while(myrs.next()){ intxxx1=myrs.getInt(‘字段1’);Stringxxx2=myrs.getString(‘字段2“);……輸出結(jié)果;}}Catch(SQLExceptione){……}……}}jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=XXX.mdbmyrs.close();mystmt.close();myconn.close();*第18頁(yè)五、實(shí)例下面我們通過(guò)一個(gè)簡(jiǎn)單的實(shí)例介紹如何使用JDBC開(kāi)發(fā)數(shù)據(jù)庫(kù)程序。首先使用Access創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)em

溫馨提示

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