摘要:JDBC(Java Database Connectivity)是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI。它由一組用Java編程語(yǔ)言編寫(xiě)的類(lèi)和接口組成,為Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話提供了一種便捷的方法,使得開(kāi)發(fā)人員能夠用純JavaAPI來(lái)編寫(xiě)具有平臺(tái)無(wú)關(guān)性的數(shù)據(jù)庫(kù)應(yīng)用程序。JDBC的出現(xiàn)使Java程序?qū)Ω鞣N數(shù)據(jù)庫(kù)的訪問(wèn)能力大大增強(qiáng)。通過(guò)使用JDBC,開(kāi)發(fā)人員可以很方便地將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)。
關(guān)鍵詞:JDBC技術(shù)
在常見(jiàn)商務(wù)網(wǎng)站開(kāi)發(fā)過(guò)程中,幾乎每個(gè)頁(yè)面都用到了與數(shù)據(jù)庫(kù)的操作,對(duì)于JDBC編程技術(shù)的理解直接影響我們的開(kāi)發(fā)進(jìn)行,所以,需要對(duì)JDBC數(shù)據(jù)庫(kù)的操作機(jī)制詳細(xì)研究。JDBC(Java Database Connectivity)是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI。它由一組用Java編程語(yǔ)言編寫(xiě)的類(lèi)和接口組成,為Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話提供了一種便捷的方法,使得開(kāi)發(fā)人員能夠用純JavaAPI來(lái)編寫(xiě)具有平臺(tái)無(wú)關(guān)性的數(shù)據(jù)庫(kù)應(yīng)用程序。JDBC的出現(xiàn)使Java程序?qū)Ω鞣N數(shù)據(jù)庫(kù)的訪問(wèn)能力大大增強(qiáng)。通過(guò)使用JDBC,開(kāi)發(fā)人員可以很方便地將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)。JDBC的體系結(jié)構(gòu):目前,應(yīng)用程序與數(shù)據(jù)庫(kù)進(jìn)行信息交換已經(jīng)非常普遍。因此,一個(gè)程序設(shè)計(jì)語(yǔ)言對(duì)數(shù)據(jù)庫(kù)開(kāi)發(fā)能力的大小,決定著該語(yǔ)言的流行程度。在JDK1.1版本之前,Java語(yǔ)言提供的對(duì)數(shù)據(jù)庫(kù)訪問(wèn)支持的能力是很弱的,編程人員不得不在Java程序中加入C語(yǔ)言的ODBC(OpenDatabaseConnectivity)函數(shù)調(diào)用,這使得Java程序的跨平臺(tái)發(fā)布能力受到很大的限制。JDBC的出現(xiàn)使Java程序?qū)Ω鞣N數(shù)據(jù)庫(kù)的訪問(wèn)能力大大增強(qiáng)。它為Java定義了一個(gè)“調(diào)用級(jí)”(call-level)的SQL接口。這意味著我們可以執(zhí)行原原本本的SQL語(yǔ)句并且取回結(jié)果。通過(guò)使用JDBC,開(kāi)發(fā)人員可以很方便地將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)。JDBC擴(kuò)展了Java的能力,它和JDBC的結(jié)合可以讓開(kāi)發(fā)人員在開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用時(shí)真正實(shí)現(xiàn)“WriteOnce,RunEverywhere!”。
JDBC連接數(shù)據(jù)庫(kù)
創(chuàng)建一個(gè)以JDBC連接數(shù)據(jù)庫(kù)的程序,包含7個(gè)步驟:
1 加載JDBC驅(qū)動(dòng)程序
在連接數(shù)據(jù)庫(kù)之前,首先要加載想要連接的數(shù)據(jù)庫(kù)的驅(qū)動(dòng)到JVM(Java虛擬機(jī))。這通過(guò)java.lang.Class類(lèi)的靜態(tài)方法forName(String className)實(shí)現(xiàn)。
2 提供JDBC連接的URL
連接URL定義了連接數(shù)據(jù)庫(kù)時(shí)的協(xié)議、子協(xié)議、數(shù)據(jù)源標(biāo)識(shí)。
書(shū)寫(xiě)形式:協(xié)議:子協(xié)議:數(shù)據(jù)源標(biāo)識(shí)
協(xié)議:在JDBC中總是以jdbc開(kāi)始
子協(xié)議:是橋連接的驅(qū)動(dòng)程序或是數(shù)據(jù)庫(kù)管理系統(tǒng)名稱(chēng)。
數(shù)據(jù)源標(biāo)識(shí):標(biāo)記找到數(shù)據(jù)庫(kù)來(lái)源的地址與連接端口。
3 創(chuàng)建數(shù)據(jù)庫(kù)的連接
要連接數(shù)據(jù)庫(kù),需要向java.sql.DriverManager請(qǐng)求并獲得Connection對(duì)象,該對(duì)象就代表一個(gè)數(shù)據(jù)庫(kù)的連接。使用DriverManager的getConnectin(String url, String username, String password )方法傳入指定的欲連接的數(shù)據(jù)庫(kù)的路徑、數(shù)據(jù)庫(kù)的用戶名和密碼來(lái)獲得。
4 創(chuàng)建一個(gè)Statement
要執(zhí)行SQL語(yǔ)句,必須獲得java.sql.Statement實(shí)例,Statement實(shí)例分為以下3 種類(lèi)型:
①執(zhí)行靜態(tài)SQL語(yǔ)句。通常通過(guò)Statement實(shí)例實(shí)現(xiàn)。②執(zhí)行動(dòng)態(tài)SQL語(yǔ)句。通常通過(guò)PreparedStatement實(shí)例實(shí)現(xiàn)。③執(zhí)行數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程。通常通過(guò)CallableStatement實(shí)例實(shí)現(xiàn)。
5 Statement接口提供了三種執(zhí)行SQL語(yǔ)句的方法:executeQuery 、executeUpdate和execute
①ResultSet executeQuery(String sqlString):執(zhí)行查詢數(shù)據(jù)庫(kù)的SQL語(yǔ)句,返回一個(gè)結(jié)果集(ResultSet)對(duì)象。②int executeUpdate(String sqlString):用于執(zhí)行INSERT、UPDATE或DELETE語(yǔ)句以及SQL DDL語(yǔ)句,如:CREATE TABLE和DROP TABLE等。③execute(sqlString):用于執(zhí)行返回多個(gè)結(jié)果集、多個(gè)更新計(jì)數(shù)或二者組合的語(yǔ)句。
6 處理結(jié)果兩種情況
①執(zhí)行更新返回的是本次操作影響到的記錄數(shù)。②執(zhí)行查詢返回的結(jié)果是一個(gè)ResultSet對(duì)象。ResultSet包含符合SQL語(yǔ)句中條件的所有行,并且它通過(guò)一套get方法提供了對(duì)這些行中數(shù)據(jù)的訪問(wèn)。使用結(jié)果集(ResultSet)對(duì)象的訪問(wèn)方法獲取數(shù)據(jù)。
7 關(guān)閉JDBC對(duì)象
操作完成以后要把所有使用的JDBC對(duì)象全都關(guān)閉,以釋放JDBC資源,關(guān)閉順序和聲明順序相反:
①關(guān)閉記錄集②關(guān)閉聲明③關(guān)閉連接對(duì)象
Java數(shù)據(jù)庫(kù)連接體系結(jié)構(gòu)是用于Java應(yīng)用程序連接數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)方法。JDBC對(duì)Java程序員而言是API,對(duì)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)連接的服務(wù)提供商而言是接口模型。作為API,JDBC為程序開(kāi)發(fā)提供標(biāo)準(zhǔn)的接口,并為數(shù)據(jù)庫(kù)廠商及第三方中間件廠商實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接提供了標(biāo)準(zhǔn)方法。JDBC使用已有的SQL標(biāo)準(zhǔn)并支持與其它數(shù)據(jù)庫(kù)連接標(biāo)準(zhǔn),如ODBC之間的橋接。JDBC實(shí)現(xiàn)了所有這些面向標(biāo)準(zhǔn)的目標(biāo)并且具有簡(jiǎn)單、嚴(yán)格類(lèi)型定義且高性能實(shí)現(xiàn)的接口。
Java 具有堅(jiān)固、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動(dòng)下載等特性,是編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序的杰出語(yǔ)言。所需要的只是Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話的方法。而JDBC正是作為此種用途的機(jī)制。
JDBC擴(kuò)展了Java的功能。例如,用Java和JDBC API可以發(fā)布含有applet的網(wǎng)頁(yè),而該applet使用的信息可能來(lái)自遠(yuǎn)程數(shù)據(jù)庫(kù)企業(yè)也可以用JDBC通過(guò)Intranet將所有職員連到一個(gè)或多個(gè)內(nèi)部數(shù)據(jù)庫(kù)中(即使這些職員所用的計(jì)算機(jī)有Windows、Macintosh和UNIX 等各種不同的操作系統(tǒng))。隨著越來(lái)越多的程序員開(kāi)始使用Java 編程語(yǔ)言,對(duì)從Java中便捷地訪問(wèn)數(shù)據(jù)庫(kù)的要求也在日益增加。
MIS 管理員們都喜歡Java和JDBC的結(jié)合,因?yàn)樗剐畔鞑プ兊萌菀缀徒?jīng)濟(jì)。企業(yè)可繼續(xù)使用它們安裝好的數(shù)據(jù)庫(kù),并能便捷地存取信息,即使這些信息是儲(chǔ)存在不同數(shù)據(jù)庫(kù)管理系統(tǒng)上。新程序的開(kāi)發(fā)期很短。安裝和版本控制將大為簡(jiǎn)化。程序員可只編寫(xiě)一遍應(yīng)用程序或只更新一次,然后將它放到服務(wù)器上,隨后任何人就都可得到最新版本的應(yīng)用程序。對(duì)于商務(wù)上的銷(xiāo)售信息服務(wù),Java和JDBC可為外部客戶提供獲取信息更新的更好方法。