JDBC數(shù)據(jù)庫連接技術(shù).ppt
《JDBC數(shù)據(jù)庫連接技術(shù).ppt》由會員分享,可在線閱讀,更多相關(guān)《JDBC數(shù)據(jù)庫連接技術(shù).ppt(26頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、JDBC數(shù)據(jù)庫連接技術(shù) 主要內(nèi)容 JDBC概述 面向程序開發(fā)人員的 JDBC API 面向底層的 JDBC Driver API JDBC Driver介紹 創(chuàng)建數(shù)據(jù)庫的連接 數(shù)據(jù)庫連接及應(yīng)用舉例 JDBC概述 JDBC出現(xiàn)以前,通過 Java訪問數(shù)據(jù)庫的唯一方法是 利用 Java I/O訪問服務(wù)器端的 CGI程序,通過 CGI程序 訪問和操作數(shù)據(jù)庫,每一次訪問都會由 web服務(wù)器啟 動一個新的 CGI進(jìn)程與數(shù)據(jù)庫建立連接,所以效率低、 速度慢且容易出錯。 JDBC的出現(xiàn)擴(kuò)充了 java的應(yīng)用范圍,通過使用 JDBC, 應(yīng)用程序可以很方便的將 SQL語句傳送給
2、幾乎任何一 種數(shù)據(jù)庫。 簡單地說, JDBC能完成: 與數(shù)據(jù)庫建立連接 向數(shù)據(jù)庫發(fā)送 SQL語句 處理數(shù)據(jù)庫返回的結(jié)果 JDBC概述 Java通過 JDBC訪問數(shù)據(jù)庫的關(guān)系: JDBC包含兩部分 API:面向應(yīng)用程序開發(fā)人員的 JDBC API和面向底層的 JDBC Driver API 面向程序開發(fā)人員的 JDBC API 被描述成為聚集抽象的接口,通過這些接口應(yīng) 用程序可以實(shí)現(xiàn)對數(shù)據(jù)庫的各種操作。最重要 的接口包括: Java.sql.DriverManager 處理驅(qū)動的加載并且對產(chǎn) 生新的數(shù)據(jù)庫連接提供支持 Java.sql.Connection
3、 數(shù)據(jù)庫連接對象 Java.sql.Statement SQL語句對象 PreparedStatement 執(zhí)行預(yù)編譯的 SQL語句 CallableStatement 調(diào)用數(shù)據(jù)庫內(nèi)嵌過程 Java.sql.ResultSet 查詢結(jié)果集對象 面向底層的 JDBC Driver API 數(shù)據(jù)庫廠商開發(fā)數(shù)據(jù)庫底層驅(qū)動程序要使用的,一般 情況下程序員用不上這些類庫。 數(shù)據(jù)庫廠商會提供多種不同類型的驅(qū)動程序連接數(shù)據(jù) 庫,一般可分為 4種類型: Type1、 Type2、 Type3、 Type4 清楚了解 4種類型的驅(qū)動程序的運(yùn)作方式,對于程序 員是很重要的,因?yàn)閷?shí)際開發(fā)
4、過程中經(jīng)常會使用各種 不同的數(shù)據(jù)庫、而且在不同的時機(jī)必須使用不同類型 的的驅(qū)動程序來連接數(shù)據(jù)庫。 招聘題:你常用的是 JDBC驅(qū)動的那一種?與其他 JDBC 驅(qū)動相比較,有什么優(yōu)點(diǎn)? JDBC Driver介紹 Type1JDBC-ODBC Bridge plus ODBC Driver 必須事先創(chuàng)建數(shù)據(jù)庫的 ODBC連接,然后再利用 JDBC-ODBC Bridge(DBC橋接器 )驅(qū)動程序,通過 ODBC連接數(shù)據(jù)庫,此種方式通常用在實(shí)驗(yàn)、測試 階段,或者暫時沒有其他驅(qū)動可用的情況下。 優(yōu)點(diǎn) :簡單 缺點(diǎn) :要設(shè)置 ODBC連接;項(xiàng)目大、用戶多時維護(hù) ODBC連接很麻煩;
5、性能低、大量效率耗在了 JDBC和 ODBC之間的數(shù)據(jù)傳遞與轉(zhuǎn)換。 JDBC Driver介紹 Type2Native-API partly-Java Driver 運(yùn)作方式與 Type1很相似。訪問數(shù)據(jù)庫時,利用數(shù) 據(jù)庫提供的特別的函數(shù)庫來完成 (Oracle、 DB2、 Sybase等都有提供 ), java利用本地函數(shù)的機(jī)制與 這些函數(shù)庫溝通。此種方式適用于于用戶機(jī)器上存 在這些函數(shù)庫。 優(yōu)點(diǎn) :效率高。由于 java是利用本地函數(shù)機(jī)制與數(shù) 據(jù)庫提供的函數(shù)庫溝通,而這些函數(shù)庫通常是數(shù)據(jù) 庫廠商精心優(yōu)化了的,所以效率很高! 缺點(diǎn) :用戶必須安裝數(shù)據(jù)庫的函數(shù)庫 JDBC
6、Driver介紹 Type3Pure Java Driver for Database MiddleWare 這種類型的驅(qū)動就是要解決上面兩種驅(qū)動所存在的問題。首先這 種驅(qū)動程序必須有一個中間層服務(wù)器 (middleware server),當(dāng)用戶 要與數(shù)據(jù)庫溝通時,會利用 JDBC與中間層服務(wù)器連接,而中間層 服務(wù)器會將 JDBC的調(diào)用轉(zhuǎn)換成數(shù)據(jù)庫的協(xié)議并調(diào)用數(shù)據(jù)庫,最后 將數(shù)據(jù)庫的返回值再轉(zhuǎn)換成 JDBC的格式返回給用戶。如此一來用 戶就不需要設(shè)置 ODBC數(shù)據(jù)源或者安裝數(shù)據(jù)庫連接的函數(shù)庫了。 事實(shí)上,中間層服務(wù)器還是利用 ODBC或者函數(shù)庫來與數(shù)據(jù)庫進(jìn) 行溝通的。 優(yōu)點(diǎn):用戶端
7、不用做任何設(shè)置;直接連接的是中間層服務(wù)器,所 以驅(qū)動程序 SIZE較??;非常適用于 Applet中要連接數(shù)據(jù)庫的應(yīng)用。 缺點(diǎn):要花錢買中間層服務(wù)器,且需要考慮它的性能及穩(wěn)定性 JDBC Driver介紹 Type4Direct-to-Database Pure Java Driver 算是真正的 JDBC驅(qū)動程序,因?yàn)檫@種驅(qū)動程序完 全由 Java完成,包括與數(shù)據(jù)庫打交道的各種網(wǎng)絡(luò)、 溝通協(xié)議,幾乎所有的數(shù)據(jù)庫廠商都提供了這種類 型的驅(qū)動程序,甚至有公司在專門制作這種驅(qū)動程 序。 優(yōu)點(diǎn):性能好,不必事先安裝任何函數(shù)庫或作任何 設(shè)置,是選擇驅(qū)動程序時非常好的選擇。 缺點(diǎn):不同
8、的數(shù)據(jù)庫需要不同的驅(qū)動。 JDBC Driver介紹 4種類型的驅(qū)動比較表 T ype1 T ype2 T ype3 T ype4 客戶端設(shè)置 設(shè)置 O DB C 數(shù) 據(jù)源 設(shè)置數(shù)據(jù)庫連 接的函數(shù)庫 無 無 服務(wù)器端設(shè)置 無 無 中間層服務(wù)器 無 性能 較差 優(yōu) 較差 優(yōu) 100% Java ? 否 否 是 是 使用時機(jī) 測試 數(shù)據(jù)庫連接的 函數(shù)庫已經(jīng)安 裝 Applet Java Applic at ion 及大多數(shù)情形 總結(jié): 基本上 Type1與 Type2屬于同一種類型,而 Type3與 Type4則都是 數(shù)據(jù) pure Java的 JDBC驅(qū)動程序
9、 一般情況下都使用 Type4, Type1用于測試或暫時找不到其他驅(qū)動 的情況下 JDBC Driver介紹 思考:怎樣知道自己現(xiàn)在到底用的是那種類型 的驅(qū)動呢? 如果須設(shè)置用戶端,則為 Type1或 Type2;反之若 不需考慮用戶端,則為 Type3或者 Type4。 在 Type1與 Type2中,若需設(shè)置的是 ODBC數(shù)據(jù)源, 則為 Type1,否則為 Type2 在 Type3與 Type4中,若存在中間層服務(wù)器,則為 Type3,否則為 Type4 創(chuàng)建數(shù)據(jù)庫的連接 環(huán)境設(shè)置步驟: 找到 JDBC驅(qū)動程序,通常以一個或者多個 Jar包的 形式提供 判
10、斷驅(qū)動程序的 Type,根據(jù) Type作一些使用前的 額外設(shè)置,如: Type1: 安裝 ODBC驅(qū)動程序、設(shè)置 ODBC數(shù)據(jù)源 Type2: 安裝 DB Client的函數(shù)庫、設(shè)置數(shù)據(jù)庫的連接 Type3: 安裝設(shè)置 Middle Ware服務(wù)器 Type4: 無 將驅(qū)動程序 jar包設(shè)置到 classpath中 創(chuàng)建數(shù)據(jù)庫的連接 一個基本的 JDBC應(yīng)用的開發(fā)都包含以下步驟: 引入相應(yīng)的包 加載 JDBC驅(qū)動程序 創(chuàng)建連接對象 創(chuàng)建 SQL語句對象 執(zhí)行數(shù)據(jù)庫操作 如果有查詢結(jié)果集返回,處理結(jié)果集 釋放相關(guān)資源 創(chuàng)建數(shù)據(jù)庫的連接
11、引入相應(yīng)的包 import java.sql.*; import javax.sql.*;(高級應(yīng)用 ) 加載 JDBC驅(qū)動程序 Class.forName(“JDBC驅(qū)動類名 ); 每個 Driver類在得到加載的時候,一般都會自動創(chuàng)建一個它本 身的實(shí)例,并通過 DriverManager類的 registerDriver方法來 自動注冊該實(shí)例;程序員也可以顯示的調(diào)用 newInstance()方 法強(qiáng)制實(shí)施這一過程,即: Class.forName(“JDBC驅(qū)動類名 ”).newInstance(); 對于 ”JDBC驅(qū)動類名 ”, Type4各有不同, Type1均 為 ”su
12、n.jdbc.odbc.JdbcOdbcDriver” 創(chuàng)建數(shù)據(jù)庫的連接 創(chuàng)建連接對象 Connection con = DriverManager.getConnection(“數(shù)據(jù)庫 url”, “userName”, “password”); DriverManager類會嘗試找到與傳遞進(jìn)來的 url字符串所代表的 數(shù)據(jù)庫進(jìn)行連接的驅(qū)動程序 (DriverManager類存有已注冊的 Driver類的清單 ),然后創(chuàng)建一個連接對象并返回。 關(guān)于 ”數(shù)據(jù)庫 url”JDBC URL標(biāo)準(zhǔn)部分由三部分組成, jdbc:: jdbc固定 標(biāo)識驅(qū)動名或數(shù)據(jù)庫連接機(jī)制,如 mysql
13、 一種標(biāo)識數(shù)據(jù)庫的方法,如 //localhost/mydb MySQL中 mydb數(shù)據(jù)庫的 url完整寫法: jdbc:mysql://localhost/mydb 創(chuàng)建數(shù)據(jù)庫的連接 創(chuàng)建 SQL語句對象 Statement stmt = con.createStatement(); SQL語句對象用于向數(shù)據(jù)庫傳送 SQL語句,另外還有 PreparedStatement和 CallableStatement這兩種語句對象。 用 SQL語句對象執(zhí)行數(shù)據(jù)庫操作 查詢: ResultSet rs = statement.executeQuery(String sql); 更新
14、 (刪除 ): int updatedrowcount = statement.executeUpdate(String sql); 創(chuàng)建數(shù)據(jù)庫的連接 如果有查詢結(jié)果集返回,處理結(jié)果集 調(diào)用 SQL語句對象的方法對數(shù)據(jù)庫進(jìn)行查詢操作后,將返回一個 ResultSet對象,此對象是由統(tǒng)一形式的列組織的數(shù)據(jù)行組成。 ResultSet對象一次只能看到一個數(shù)據(jù)行,使用 next()方法走到下一 數(shù)據(jù)行。獲得一行數(shù)據(jù)后, ResultSet對象可以使用 getXxx() 方 法獲得字段值,將位置索引 (第一列為 1, 第二列為 2等 )或字段名傳 遞給 getXxx(..)方法的參數(shù)即可
15、ResultSet類的若干方法 (查閱 JDK文檔 ) Boolean next() String getString(int columnIndex) Int getInt(int columnIndex) float getFloat(int columnIndex) 釋放相關(guān)資源 rs.close(); stmt.close(); con.close(); ResultSet對象會在生成它的 SQL語句對象被關(guān)閉或重新執(zhí)行時自動關(guān)閉 使用 Type4驅(qū)動連接數(shù)據(jù)庫舉例 SQL Server2000 驅(qū)動程序 jar文件: msbase.jar, ms
16、sqlserver.jar, msutil.jar 驅(qū)動類名: com.microsoft.jdbc.sqlserver.SQLServerDriver 數(shù)據(jù)庫 URL, 如 yinhe數(shù)據(jù)庫: jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=yinh e 1433是 SQL Server數(shù)據(jù)庫連接服務(wù)的默認(rèn)端口,可用 telnet 先測試 舉例:檢索出一個數(shù)據(jù)表里的所有內(nèi)容,并打印結(jié)果到命令 提示符終端。 使用 Type4驅(qū)動連接數(shù)據(jù)庫舉例 MySQL MySQL沒有提供數(shù)據(jù)庫操作的 GUI,數(shù)據(jù)庫、表
17、的創(chuàng)建需 要使用 DDL 驅(qū)動程序 jar文件: mm.mysql-2.0.4-bin.jar 驅(qū)動類名: org.gjt.mm.mysql.Driver 數(shù)據(jù)庫 URL, 如 yinhe數(shù)據(jù)庫: jdbc:mysql://localhost/yinhe 復(fù)習(xí)與實(shí)踐 使用 Type4驅(qū)動連接 MySQL數(shù)據(jù)庫 安裝 MySQL數(shù)據(jù)庫 使用 DDL創(chuàng)建數(shù)據(jù)庫 (如 yinhe)、數(shù)據(jù)表 (employees) 使用 Java連接數(shù)據(jù)庫,并檢索出一個數(shù)據(jù)表中的全 部內(nèi)容打印到屏幕終端 復(fù)習(xí)內(nèi)容: JDBC數(shù)據(jù)庫應(yīng)用的一般流程, Type4驅(qū)動的使用 使用 T
18、ype4驅(qū)動連接其它常見數(shù)據(jù)庫 Oracle Class.forName(“oracle.jdbc.driver.OracleDriver”); Connection con = DriverManager.getConnection(“jdbc:oracle:thin:localhost: 1521:databaseName”, “user”, “password”); Postgre SQL Class.forName(“org.postgresql.Driver”); Connection con = DriverManager.getConnection(“jdbc:postgr
19、esql://localhost/d atabaseName”, “user”, “password”); 使用 Type1驅(qū)動連接數(shù)據(jù)庫舉例 要點(diǎn): 首先要設(shè)置并測試 ODBC數(shù)據(jù)源 Type1驅(qū)動名均為: sun.jdbc.odbc.JdbcOdbcDriver 此驅(qū)動位于 rt.jar包中,所以 classpath不需要專門設(shè)置 數(shù)據(jù)庫 URL: jdbc:odbc:數(shù)據(jù)源名字 如 yinhe數(shù)據(jù)庫,對應(yīng)的 ODBC數(shù)據(jù)源是 milkway,則為: jdbc:odbc:milkway 舉例: 使用 Type1驅(qū)動連接 SQL Server20
20、00數(shù)據(jù)庫 復(fù)習(xí)與實(shí)踐 使用 Type1驅(qū)動連接 Access數(shù)據(jù)庫 Notes: 與使用 Type1驅(qū)動連接 SQL Server2000的步驟完全 一樣 復(fù)習(xí)內(nèi)容 JDBC數(shù)據(jù)庫應(yīng)用的一般流程, Type1驅(qū)動的使用 補(bǔ)充小技巧 不用手動注冊 ODBC數(shù)據(jù)源直接連接 Access數(shù)據(jù)庫: 只需將數(shù)據(jù)庫得連接 url寫成 “jdbc:odbc:Driver=Microsoft Access Driver (*.mdb);DBQ=c:test.mdb“的形式即可,對 于其他的小型數(shù)據(jù)庫如 foxpro,甚至 excel也可以。 以數(shù)據(jù)庫的方式查 詢 Exce
21、l表格 方法,通過 jdbc-odbc橋接器 (即 Type1驅(qū)動 ) 步驟: (1). 建立 ODBC數(shù)據(jù)源,指向要連接的 Excel文件 (2). Excel文件中是沒有像數(shù)據(jù)庫中那樣的數(shù)據(jù)表的, 需要手工指定,數(shù)據(jù)表的概念在 Excel文件中對應(yīng) 就是自定義名稱:在 Excel表格中選中一塊要操作 的區(qū)域 -- “插入 ”--“名稱 ”--“定義 ”, 取個名字,這 個名字就是在程序中要操作的數(shù)據(jù)表名。 (3). 以后的步驟完全同其他情況下 Type1驅(qū)動的使 用。 作業(yè): 在自己機(jī)器上安裝 SQL Server2000數(shù)據(jù)庫 編寫一個類用于連接數(shù)據(jù)庫,其中數(shù)據(jù)庫 URL,用戶名和密碼可以通過構(gòu)造函數(shù)傳遞 使用上面的類連接數(shù)據(jù)庫,并用 Statement執(zhí) 行一個查詢語句,打印出結(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中生物對照實(shí)驗(yàn)專題復(fù)習(xí)課件
- 初中物理資源九年級第十五單元課件串并聯(lián)識別
- 咯血與嘔血課件
- What's_your_number_課件
- 外研版七下Module3Unit1(教育精品)
- 浙美版三年級上冊美術(shù)第15課-剪雪花教學(xué)ppt課件
- 蘇教版六年級下冊數(shù)學(xué)正比例和反比例的意義課件
- 蘇教版五下《單式折線統(tǒng)計(jì)圖》教研課件
- 固態(tài)相變概論
- 三角形全等的判定復(fù)習(xí)-課件2
- 太陽能發(fā)展趨勢課件
- 道路工程監(jiān)理最新規(guī)劃范本課件
- SPC及CPK教程(理論篇)課件
- Travel-Plan旅行計(jì)劃-PPT
- 新冠肺炎疫情期間醫(yī)務(wù)人員防護(hù)技術(shù)指南