《數(shù)據(jù)庫連接JDBC》PPT課件.ppt

上傳人:w****2 文檔編號:14709703 上傳時(shí)間:2020-07-29 格式:PPT 頁數(shù):26 大?。?94KB
收藏 版權(quán)申訴 舉報(bào) 下載
《數(shù)據(jù)庫連接JDBC》PPT課件.ppt_第1頁
第1頁 / 共26頁
《數(shù)據(jù)庫連接JDBC》PPT課件.ppt_第2頁
第2頁 / 共26頁
《數(shù)據(jù)庫連接JDBC》PPT課件.ppt_第3頁
第3頁 / 共26頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《數(shù)據(jù)庫連接JDBC》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫連接JDBC》PPT課件.ppt(26頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、第7講,數(shù)據(jù)庫連接(JDBC),2,綱要,數(shù)據(jù)庫知識的復(fù)習(xí) 基本SQL語句 JDBC基礎(chǔ) 增、刪、改、查操作舉例 預(yù)處理語句的使用,3,1. 數(shù)據(jù)庫知識的復(fù)習(xí),大家已修讀過數(shù)據(jù)庫系統(tǒng)課程,這里只復(fù)習(xí)有關(guān)知識: 關(guān)系型數(shù)據(jù)庫、DBMS、表、字段、記錄、數(shù)據(jù)庫,,,,,一個(gè)數(shù)據(jù)庫可以包含多個(gè)表,4,數(shù)據(jù)的各種操作技術(shù),數(shù)據(jù)查找(SELECT) 例如:SELECT * FROM factory_tb where factory_id=12 數(shù)據(jù)插入(INSERT) 例如:INSERT INTO productClass_tb VALUES(背包) 數(shù)據(jù)刪除(DELETE) 例如:DELETE FRO

2、M factory_tb WHERE factory_id =04 數(shù)據(jù)更新(UPDATE) 例如: UPDATE productClass_tb SET productClass_name=挎包 WHERE productClass_id=01,5,JDBC是Java DataBase Connectivity(Java 數(shù)據(jù)連接)技術(shù)的簡稱,是一種可用于執(zhí)行SQL語句的Java API。它由一些Java語言編寫的類和接口組成; JDBC為數(shù)據(jù)庫應(yīng)用開發(fā)人員、數(shù)據(jù)庫前臺工具開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序。,JDBC基礎(chǔ),6,J

3、DBC主要功能: (1)與數(shù)據(jù)庫建立連接;(2)向數(shù)據(jù)庫發(fā)送SQL語句; (3)處理數(shù)據(jù)返回的結(jié)果。,7,JDBC有兩個(gè)程序包: java.sql:核心包,這個(gè)包中的類主要完成數(shù)據(jù)庫的基本操作,如生成連接、執(zhí)行SQL語句、預(yù)處理SQL語句等; javax.sql:擴(kuò)展包,主要為數(shù)據(jù)庫方面的高級操作提供了接口和類。 JDBC常用類和接口: Driver 接口:加載驅(qū)動程序 DriverManager類:裝入所需的驅(qū)動程序,編程時(shí)調(diào)用它的方法來創(chuàng)建連接; Connection接口:編程時(shí)使用該類對象創(chuàng)建Statement對象; Statement接口:編程時(shí)使用該類對象得到ResultSet對象,

4、JDBC的類與接口,8,JDBC,JDBC (Java 數(shù)據(jù)庫連接) (sun公司提供),Java 應(yīng)用程序編程接口,Java應(yīng)用程序,,,數(shù)據(jù)庫,插 入,,,修 改,刪 除,查詢,,,9,數(shù)據(jù)庫,ODBC,客戶機(jī)/服務(wù)器 GUI應(yīng)用程序,ODBC (開放式數(shù)據(jù)庫連接) (Microsoft 提供),,,插 入,,刪 除,修 改,應(yīng)用程序編程接口,,查詢,,,10,JDBC 驅(qū)動程序的類型,JDBC 驅(qū)動程序 的類型,,,,,,JDBC-ODBC橋驅(qū)動程序及ODBC驅(qū)動程序,本地API部分Java驅(qū)動程序,JDBC-Net 純Java驅(qū)動程序,本地協(xié)議純Java驅(qū)動程序,,每種不同的數(shù)據(jù)庫的驅(qū)

5、動程序都不同,但從類型上分為四類,11,操作步驟: 創(chuàng)建數(shù)據(jù)源(使用JDBC-ODBC橋式驅(qū)動程序時(shí)必需創(chuàng)建); 注冊、加載特定的驅(qū)動程序; 創(chuàng)建連接-- Connection對象; 利用Connection對象生成Statement對象; 利用Statement對象執(zhí)行SQL語句,如增、刪、改、查; 若是執(zhí)行查詢語句,還要從ResultSet讀取數(shù)據(jù); 關(guān)閉ResultSet、Statement、Connection等。,JDBC的使用(重點(diǎn)),12,(1)創(chuàng)建數(shù)據(jù)源: Windows操作系統(tǒng):開始/管理工具/數(shù)據(jù)源(ODBC),選擇用戶DSN,點(diǎn)擊”添加”按鈕; 選擇對應(yīng)的驅(qū)動程序,如:M

6、icrosoft Access Driver (*.mdb)。,13,(1)創(chuàng)建數(shù)據(jù)源(續(xù)):,14,(2)加載驅(qū)動程序: 格式:Class.forName(驅(qū)動程序名稱); 請注意:不同類型的數(shù)據(jù)庫加載的驅(qū)動程序不同: JDBC-ODBC橋式: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); Ms SQL sever : SQL 2000: Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”); SQL 2005: Class.forName(“com.microsoft.sq

7、lserver.jdbc.SQLServerDriver ”);,15,下載對應(yīng)的JDBC驅(qū)動程序jar包文件,放入Tomcat的lib子目錄中或web項(xiàng)目的WEB-INF/lib中。,SQL Server 2000驅(qū)動程序的Jar包有3個(gè)文件:,SQL Server 2005驅(qū)動程序的Jar包有1個(gè)文件:,16,成功加載后,會將加載的驅(qū)動類注冊給DriverManager類,如果加載失敗,將拋出ClassNotFoundException異常,即未找到指定的驅(qū)動類,所以需要在加載數(shù)據(jù)庫驅(qū)動類時(shí)捕捉可能拋出的異常。,try Class.forName(sun.jdbc.odbc.JdbcO

8、dbcDriver); catch (ClassNotFoundException e) System.out.println(加載數(shù)據(jù)庫驅(qū)動時(shí)拋出異常,內(nèi)容如下:); e.printStackTrace(); ,17,(3)創(chuàng)建數(shù)據(jù)庫連接: 格式:Connection conn = DriverManager.getConnection(url,“用戶名, 密碼); 其中:url類似于互聯(lián)網(wǎng)的地址,它由三部分組成,即: 協(xié)議:子協(xié)議:子命名,協(xié)議通常是jdbc,子協(xié)議是接受DBMS的名稱和版本,子名字通常是數(shù)據(jù)源。 JDBC-ODBC橋式: jdbc:odbc:數(shù)據(jù)源名,例如: jdb

9、c:odbc:myAccess Ms SQL sever : jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=數(shù)據(jù)庫名 (適用于SQL 2000) jdbc:sqlserver://127.0.0.1:1433;DatabaseName= 數(shù)據(jù)庫名 (適用于SQL 2005),18,(4)利用Connection對象生成Statement對象(即會話): 格式:Statement stmt = conn.createStatement( ); 或 conn.createStatement(int resultSetType,

10、 int resultSetConcurrency) 其中: resultSetType只能是以下三個(gè)值之一: ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_INSENSITIVE ResultSet.TYPE_SCROLL_SENSITIVE resultSetConcurrency只能是以下兩個(gè)值之一: ResultSet.CONCUR_READ_ONLY ResultSet.CONCUR_UPDATABLE,19,(5)利用Statement對象執(zhí)行SQL語句: 執(zhí)行select語句:將返回一個(gè) ResultSet 對象 格式:

11、ResultSet rs = stmt.executeQuery(“Select 語句”); 例如:ResultSet rs = stmt.executeQuery(“SELECT * FROM factory_tb “); 結(jié)果集(即ResultSet 對象 ):也就是符合查詢條件的記錄構(gòu)成的集合。,20,執(zhí)行update(更新)、insert(插入)、delete(刪除)語句: 格式: int n= stmt.executeUpdate(“update、insert、delete語句等”); 例如:stmt.executeUpdate(“DELETE FROM factory_tb WHE

12、RE factory_id =04“); 返回結(jié)果:行計(jì)數(shù)或者 0(表示不返回任何內(nèi)容),可以不保存。 請注意: stmt.executeQuery()與stmt.executeUpdate()方法的不同,21,(6)若是執(zhí)行查詢語句,需要從ResultSet讀取數(shù)據(jù): 通過返回的ResultSet對象來獲得查詢結(jié)果: ResultSet對象的指針一開始定位在第一條記錄之前,即當(dāng)前行為第一行; ResultSet提供了指針下移的方法:next(),指針可以不斷下移,直到最后。除此之外,還有其它移動指針的方法; 通常,也是用rs.next()是否為false來判斷結(jié)果集是否為空? ResultS

13、et提供了一些方法來獲得當(dāng)前行中的不同字段的值: getXXX(int 列序號) 或 getXXX(String 列名),22,(7)調(diào)用close()方法,依次關(guān)閉ResultSet、Statement、Connection對象。注意:關(guān)閉順序與打開順序相反。,23,預(yù)處理語句(自學(xué)),問題的提出: 當(dāng)向數(shù)據(jù)庫發(fā)送一個(gè)SQL語句,比如“Select * from student”,數(shù)據(jù)庫中的SQL解釋器負(fù)責(zé)將把SQL語句生成底層的內(nèi)部命令,然后執(zhí)行該命令,完成有關(guān)的數(shù)據(jù)操作; 如果不斷地向數(shù)據(jù)庫提交SQL語句勢必增加數(shù)據(jù)庫中SQL解釋器的負(fù)擔(dān),影響執(zhí)行的速度; 如果應(yīng)用程序能針對連接的數(shù)據(jù)庫

14、,事先就將SQL語句解釋為數(shù)據(jù)庫底層的內(nèi)部命令,然后直接讓數(shù)據(jù)庫去執(zhí)行這個(gè)命令,顯然不僅減輕了數(shù)據(jù)庫的負(fù)擔(dān),而且也提高了訪問數(shù)據(jù)庫的速度。,24,問題的解決:對于JDBC,如果使用Connection和某個(gè)數(shù)據(jù)庫建立了連接對象conn,那么 conn就可以調(diào)用 preparedStatement(String sql)方法對SQL語句進(jìn)行預(yù)編譯處理,生成該數(shù)據(jù)庫底層的內(nèi)部命令,并將該命令封裝在PreparedStatement對象中,那么該對象調(diào)用相應(yīng)的方法都可以使得該底層的內(nèi)部命令被數(shù)據(jù)庫執(zhí)行; 在創(chuàng)建PreparedStatement 對象時(shí),SQL 語句是作為參數(shù)提供的;由于只有這些值的

15、位置是已知的,故使用? 符號來表示。運(yùn)行SQL語句時(shí),將設(shè)置實(shí)際值。,25,例如: PreparedStatement ps; ps = conn.prepareStatement(“insert into table (col1,col2) values (?, ?)”); ps.setInt(1,100); ps.setString(2,”Dennis”); ps.execute();,26,總結(jié),JDBC概念的理解 使用 Class.forName() 方法可以將驅(qū)動程序加載到 Java 解釋器中 使用 DriverManager 類的 getConnection() 方法和 Connection 對象的 createStatement() 方法可建立連接 最后,使用 executeQuery() 或 executeUpdate() 方法通過 Statement 實(shí)例構(gòu)建并執(zhí)行 SQL 語句 PreparedStatement 接口允許創(chuàng)建預(yù)編譯的 SQL 語句,并使得在后續(xù)階段可以指定語句的參數(shù) 結(jié)果集可以是可滾動的,也可以是不可滾動的,

展開閱讀全文
溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!