摘要:作為一種有效的數(shù)據(jù)存貯和管理工具,數(shù)據(jù)庫(kù)技術(shù)得到了廣泛的應(yīng)用,Java提供的JDBC API提供多種數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序類型,提供執(zhí)行SQL語(yǔ)句來(lái)操作關(guān)系數(shù)據(jù)庫(kù)的方法,使Java應(yīng)用程序具有訪問不同類型的數(shù)據(jù)庫(kù)的能力。
關(guān)鍵詞:Java;ODBC;JDBC;SQL;數(shù)據(jù)庫(kù)連接
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2012)31-7413-03
1 JDBC概述
最初Java并沒有訪問數(shù)據(jù)庫(kù)的能力,1996年Sun推出了JDBC,將Java的應(yīng)用范圍擴(kuò)展到了數(shù)據(jù)庫(kù)領(lǐng)域,使Java應(yīng)用程序具有訪問不同類型數(shù)據(jù)庫(kù)的能力。
1.1 JDBC概念
JDBC是基于Java的,用于訪問關(guān)系數(shù)據(jù)庫(kù)的應(yīng)用程序編程接口(API),是對(duì)ODBC API的一種面向?qū)ο蟮姆庋b和重新設(shè)計(jì),Java應(yīng)用程序通過JDBC API與數(shù)據(jù)庫(kù)連接,而實(shí)際的動(dòng)作則由JDBC驅(qū)動(dòng)程序管理器(Driver Manager)通過JDBC驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行連接。JDBC作為一種數(shù)據(jù)庫(kù)連接和訪問標(biāo)準(zhǔn),由Java語(yǔ)言和數(shù)據(jù)庫(kù)開發(fā)商共同遵守并執(zhí)行。
Java.sql提供了cd7f3f1eac43f3d2b1934c48d242dfdb5a5afa6c27ae993f575bdb34a3c3964b多種JDBC API,以下是最常見的幾種:
1)Connection接口:代表與數(shù)據(jù)庫(kù)的連接.通過它調(diào)用createStatement能夠創(chuàng)建Statement對(duì)象。
2)Statement接口:用來(lái)執(zhí)行SQL語(yǔ)句并返回結(jié)果記錄集。
3) ResultSet接口:SQL語(yǔ)句執(zhí)行后的結(jié)果記錄集,必須逐行訪問數(shù)據(jù)行,但是可以用任何順序訪問列。
1.2 JDBC驅(qū)動(dòng)程序類型
JDBC提供了以下四種類型的驅(qū)動(dòng)程序,其中前兩種基于已有的驅(qū)動(dòng)程序,部分由Java實(shí)現(xiàn),后兩種是新設(shè)計(jì)的,全部由Java實(shí)現(xiàn)。
1)JDBC-ODBC 橋驅(qū)動(dòng)程序
通過把JDBC方法翻譯成ODBC函數(shù)調(diào)用,使Java應(yīng)用程序可以通過ODBC驅(qū)動(dòng)程序訪問數(shù)據(jù)庫(kù)。
2)本地庫(kù)Java實(shí)現(xiàn)驅(qū)動(dòng)程序
與橋驅(qū)動(dòng)程序相似,本地庫(kù)Java實(shí)現(xiàn)驅(qū)動(dòng)程序是建立在已有專用驅(qū)動(dòng)程序基礎(chǔ)上,將JDBC方法翻譯成本地已有的專用驅(qū)動(dòng)程序。
3)網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)程序
這是一種全新結(jié)構(gòu)的驅(qū)動(dòng)程序,它以“中間件”形式出現(xiàn),由中間件組件把JDBC方法翻譯成數(shù)據(jù)庫(kù)客戶端請(qǐng)求,再向數(shù)據(jù)庫(kù)服務(wù)器發(fā)送請(qǐng)求,中間件組件和數(shù)據(jù)庫(kù)的客戶端通常位于中間層服務(wù)器上。
4)數(shù)據(jù)庫(kù)協(xié)議驅(qū)動(dòng)程序
這也是一種全新結(jié)構(gòu)的驅(qū)動(dòng)程序,它的特點(diǎn)是應(yīng)用程序直接與數(shù)據(jù)庫(kù)服務(wù)器端通信。這種方式需要數(shù)據(jù)庫(kù)開發(fā)商的強(qiáng)力支持,提供基于特定數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)插件,實(shí)現(xiàn)針對(duì)特定數(shù)據(jù)庫(kù)的通信協(xié)議,使JDBC驅(qū)動(dòng)程序通過網(wǎng)絡(luò)插件直接與數(shù)據(jù)庫(kù)服務(wù)器通信。
2 使用JDBC訪問數(shù)據(jù)庫(kù)
使用JDBC訪問數(shù)據(jù)庫(kù)一般要經(jīng)過:裝入合適的驅(qū)動(dòng)程序,創(chuàng)建一個(gè)連接對(duì)象,生成并執(zhí)行一個(gè)SQL語(yǔ)句,處理查詢結(jié)果集關(guān)閉連接這幾個(gè)步驟。
2.1 加載驅(qū)動(dòng)程序并建立連接
DriverManager類是JDBC的管理層,它工作于用戶和驅(qū)動(dòng)程序之間,它跟蹤可用的驅(qū)動(dòng)程序,并在數(shù)據(jù)庫(kù)和相應(yīng)驅(qū)動(dòng)程序間建立連接。DriverManager類包含各Driver類,所有的Driver類都必須包含一個(gè)靜態(tài)部分。它創(chuàng)建該類的實(shí)例,然后在加載該實(shí)例時(shí),DriverManager類進(jìn)行注冊(cè)。注冊(cè)方式有兩種:
1)通過調(diào)用方法Class.forName:這將直接加載驅(qū)動(dòng)程序類。由于這與外部設(shè)置無(wú)關(guān),故推薦使用這種加載方法:Class.forName(“驅(qū)動(dòng)名”)。
2)通過將驅(qū)動(dòng)程序添加到j(luò)ava.lang.system的屬性jdbc.drivers中,這是一個(gè)由DriverManager類加載的驅(qū)動(dòng)程序類名列表。
2.2 創(chuàng)建Connection對(duì)象建立與數(shù)據(jù)庫(kù)的連接