靳晉
德州職業(yè)技術(shù)學(xué)院 山東德州 253034
JDBC技術(shù)淺析
靳晉
德州職業(yè)技術(shù)學(xué)院 山東德州 253034
JDBC是J2EE的一個重要組成部分,也是軟件開發(fā)人員經(jīng)常使用的一項(xiàng)重要技術(shù)。掌握J(rèn)DBC對于Java軟件開發(fā)人員來說,是一個非常重要的技能。
JDBC;API;連接池
JDBC即Java DataBase Connectivity,它是由一系列Java接口規(guī)范組成的、用于訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)。JDBC是由Sun定義的一組接口,由數(shù)據(jù)庫廠商來實(shí)現(xiàn),規(guī)定了Java開發(fā)人員訪問數(shù)據(jù)庫所使用的方法的調(diào)用規(guī)范。
Java語言自1995年正式公布后,風(fēng)靡全球,出現(xiàn)大量用Java語言編寫的程序,其中包括數(shù)據(jù)庫應(yīng)用程序。JDBC是Java與數(shù)據(jù)庫的接口規(guī)范,它由一些Java語言編寫的類和接口組成,旨在讓各數(shù)據(jù)庫開發(fā)商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫API。目前比較常見的JDBC驅(qū)動程序可分為4種類型。
第一種類型的驅(qū)動程序的實(shí)現(xiàn)是通過將JDBC的調(diào)用全部委托給其他編程接口來實(shí)現(xiàn)的,比如ODBC。這種類型的驅(qū)動程序需要安裝本地代碼庫,即依賴于本地的程序,所以便攜性較差,比如JDBC-ODBC橋驅(qū)動程序。
第二種類型的驅(qū)動程序的實(shí)現(xiàn)是部分基于Java語言的,即該驅(qū)動程序一部分是用Java語言編寫,其他部分委托本地的數(shù)據(jù)庫的客戶端代碼來實(shí)現(xiàn)。
第三種類型的驅(qū)動程序的實(shí)現(xiàn)是全部基于Java語言的,該類型的驅(qū)動程序通常由某個中間件服務(wù)器提供,這樣客戶端程序可以使用與數(shù)據(jù)庫無關(guān)的協(xié)議和中間件服務(wù)器進(jìn)行通信,中間件服務(wù)器再將客戶端的JDBC調(diào)用轉(zhuǎn)發(fā)給數(shù)據(jù)庫進(jìn)行處理。
第四種類型的驅(qū)動程序的實(shí)現(xiàn)是全部基于Java語言的,該類型的驅(qū)動程序中包含特定數(shù)據(jù)庫的訪問協(xié)議,使得客戶端可以直接和數(shù)據(jù)庫進(jìn)行通信。
JDBC定義了一個支持標(biāo)準(zhǔn)SQL功能的通用低層的應(yīng)用程序編程接口(API),JDBC API的核心組件有DriverManager類、Connection接口、Statement接口和ResultSet接口。4個接口的作用:1)DriverManager類用于跟蹤JDBC驅(qū)動程序并生成數(shù)據(jù)庫連接;2)Connection接口用于取得數(shù)據(jù)庫信息,生成數(shù)據(jù)庫語句并管理數(shù)據(jù)庫連接;3)Statement接口在基層連接運(yùn)行SQL語句,生成結(jié)果集;4)ResultSet接口用于訪問SQL語句返回的數(shù)據(jù),在讀取結(jié)果時可以使用next()方法定義每行數(shù)據(jù)并通過get()方法讀取數(shù)據(jù)。
JDBC主要用于數(shù)據(jù)庫連接,下面是其訪問數(shù)據(jù)庫的步驟。
1)將數(shù)據(jù)庫的JDBC驅(qū)動加載到classpath中,在基于JAVAEE的Web應(yīng)用實(shí)際開發(fā)過程中,通常要把目標(biāo)數(shù)據(jù)庫產(chǎn)品的JDBC驅(qū)動復(fù)制到WEB-INF/lib下。
2)加載JDBC驅(qū)動,并將其注冊到DriverManager中,以SQLServer數(shù)據(jù)庫連接為例, Java代碼如下:
5)執(zhí)行SQL語句。
6)訪問結(jié)果記錄集ResultSet對象。
7)依次將ResultSet、Statement、PreparedStatement、Connection對象關(guān)閉,釋放所占用的資源。
注意:最后兩個步驟必須要做,因?yàn)檫@些資源不會自動釋放,必須要自己關(guān)閉。
JDBC事務(wù)處理可以通過setAutoCommit()來設(shè)定自動提交事務(wù),也可以通過Statement的addBatch()、executeBatch()的方式來批量處理操作并執(zhí)行事務(wù)。
JDBC數(shù)據(jù)連接池允許在一個項(xiàng)目中,根據(jù)配置,指向不同類型的不同數(shù)據(jù)庫,這樣可以實(shí)現(xiàn)數(shù)據(jù)的分布式存儲,從而更高效地與后臺交互。JDBC連接池可以定義數(shù)據(jù)庫的最大(?。┻B接數(shù)、數(shù)據(jù)超時等。
Java語言及其技術(shù)是當(dāng)今世界程序設(shè)計語言的主流,應(yīng)用Java技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫應(yīng)用系統(tǒng)是未來的發(fā)展方向。JDBC隨著Java的發(fā)展,會更完善成熟,發(fā)揮更重要的作用。
TP311.13
B
1671-489X(2011)03-0091-01
10.3969/j.issn.1671-489X.2011.03.091