JBuilder9+Weblogic7實戰篇之工具篇(JDBC 1) (轉)

amyz發表於2007-11-16
JBuilder9+Weblogic7實戰篇之工具篇(JDBC 1) (轉)[@more@]

JBuilder9+LOGIC7實戰篇:namespace prefix = o ns = "urn:schemas--com::office" />

工具篇(JC 1)

  作者:黃 凱  

E_:

Weblogic7中配置 1

一、JDBC簡介

  自從語言於1995年5月正式公佈以來,java風靡全球,出現了大量的用java語言編寫的,其中也包括應用程式。由於沒有一個java語言的,人員不得不在java程式中加入C語言的ODBC。這就使很多java的優秀特性無法充分發揮出來,比如平臺無關性、面向特性等。隨著越來越多的的程式設計人員對java語言的日益喜愛,越來越多的公司在java程式開發上投入的精力日益增加,對java語言介面訪問資料庫的API的要求越來越強烈。也由於ODBC的確有其不足之處,比如它並不容易使用,沒有物件導向的特性等,Sun公司決定開發一個以java語言為介面的資料庫應用程式開發介面。在1.x版本中,JDBC只是一個可選部件,到了JDK1.1公佈時,類包(也就是JDBC API)就成為了java語言的標準部件。

  JDBC(Java Database Connectivity java資料庫連線)是java語言與資料庫通訊的標準API。它由一組用java語言編寫的類和介面組成。JDBC為資料庫開發人員提供了一個標準的API,使他們能夠用純java API編寫資料庫應用程式。有了JDBC,向各種關聯式資料庫傳送SQL語句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問資料庫專門寫一個程式,為訪問資料庫又專門寫一個程式,只需用JDBC API寫一個程式就夠了,它可向相應資料庫傳送SQL語句。

  簡單地說,JDBC可做三件事:

★  與資料庫建立連線

★  傳送SQL語句

★  處理結果

使用JDBC要引入組成JDBC的兩個程式包:

★  java.sql   (核心API)

★  javax.sql  (擴充套件API)

有關JDBC最新的資訊,可以查閱JDBC的網站,網址為:

二、JDBC的結構

  JDBC主要包括以下類:連線(Connection)、語句(Statement)和結果集(Resultset)。JDBC應用程式的工作方式是這樣的:首先載入資料庫的JDBC程式(JDBC驅動程式有Manager類管理),然後建立連線(Connection),有連線建立語句物件(語句物件有三種:Statement、PreparedStatement和CallabelStatement)及結果集(Resultset)物件(結果集代表從資料庫中取出的記錄),透過語句物件和結果集物件進行各種資料庫操作,最後關閉連線。

2.1 JDBC驅動程式

  JDBC驅動程式有4種型別。選擇何種型別的驅動程式主要取決於程式的應用範圍。正確選擇合適的驅動程式,使之符合資料庫程式的設計,是提高程式必須考慮的一個方面。要想理解這幾種驅動程式,首先要了解資料庫驅動程式的基本原理。

  資料庫驅動程式是用來解決應用程式與資料庫通訊問題的。早期的資料庫產品,提供一個透過與資料庫通訊的網路庫work libraries)。網路庫由執行於客戶端和資料庫服務端元件組成。在系統中,網路庫通常以DLL(Dynamic-Link Library動態連結庫)的形式存在。這種形式的資料庫客戶端程式開發有一個問題,每一種資料庫有自己的一套API,因而開發出的程式不能獨立於資料庫。為了解決這個問題,資料庫廠商決定提供一個建立在網路庫之上的、統一的高層API,開發人員呼叫高層API,從而遮蔽了與資料庫產品緊密相關的網路庫。Microsoft推出的ODBC(Open Database Connectivity 開放資料庫互連)API就是這樣的一個產品。

  JDBC是一個面向java開發人員的類似於ODBC的資料庫訪問介面。不同於ODBC的是,JDBC只支援java應用程式。在使用JDBC的java應用程式中,客戶端程式中只呼叫JDBC的語句,真正與資料庫通訊是由資料庫廠商提供的JDBC驅動程式完成的。

  JDBC驅動程式分為以下4種型別:

JDBC-ODBC橋加ODBC驅動程式

  它是把JDBC操作翻譯成對應的ODBC呼叫。它的優點是可以訪問ODBC能訪問的所有資料庫,缺點是比較低。

  採用這種方式必須將ODBC二進位制程式碼(在許多情況下,還包括資料庫客戶機程式碼)載入到使用該驅動程式的每個客戶機上。

本地API

  它直接將應用程式與網路庫連線,這樣,必須在使用此驅動程式的上網路庫。

★ JDBC網路純java驅動程式

  將JDBC轉換為與DBMS無關的網路,之後這種協議又被某個轉換為一種DBMS協議。這種資料庫驅動程式安裝在伺服器上,而不是在客戶機上。網路伺服器中介軟體(例如Weblogic Server)能夠將它的純java客戶機連線到多種不同的資料庫上。所用的具體協議取決於提供者。

本地協議純java驅動程式

  把JDBC呼叫直接轉換為DBMS所使用的網路協議。這將允許從客戶機機器上直接呼叫DBMS伺服器,是Internet訪問的一個很實用的解決方法。它是完全用java實現的,不需要其他驅動程式和客戶端網路庫。此類驅動程式是資料庫廠商提供的,能夠提供對於本公司資料庫系統最的訪問。

  Sun公司在Internet上提供了一個JDBC驅動程式目錄,網址是:

  .java.sun.com/products/jdbc/drivers">

2.2 載入JDBC驅動程式

  使用JDBC的第一步是安裝驅動程式。大多數資料庫都有JDBC驅動程式,如果沒有JDBC驅動程式,可以使用Sun的JDBC-ODBC橋驅動程式。

  使用JDBC-ODBC橋驅動程式的語句如下:

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  使用Oracle的JDBC驅動程式的語句如下:

  Class.forName("oracle.jdbc.driver.OracleDriver");

2.3 連線(Connection)

2.3.1 直接連線與池連線

連線是客戶機端java程式碼與資料庫之間的通訊連線,由JDBC驅動程式建立。它儲存了所有對資料庫伺服器呼叫的上下文資訊。在JDBC API中,連線對應於java.sql.Connection介面。建立一個連線後可以透過連線建立語句(Statement)物件、設定連線選項或管理事務(Transaction)。

  連線分為兩種:直接連線和池連線。

1.直接連線

直接連線是直接在客戶端java程式碼中開啟並維護的,對應於1、2、4驅動程式。使用直接連線時必須在完成對資料庫的操作後將連線關閉。否則,太多的連線將導致系統效能下降甚至超過資料庫伺服器的連線限制,以至於其他程式無法建立到資料庫伺服器的連線。

2.池連線

  池連線是被伺服器開啟和維護的。J2EE伺服器啟動時會建立一定數量的池連線(具體數量由配置引數決定),並一直維護不少於此數目的池連線。客戶端需要連線時,池連線程式會返回一個未使用的池連線並將其標記為忙。如果當前沒有空閒的連線,池驅動程式就新建一定數量的連線,新建連線的數量由配置引數決定。當使用池連線的呼叫完成後,池驅動程式將此連線標記為空閒,這樣,其他呼叫又可以使用這個連線。

2.3.2 如何建立Oracle的JDBC連線

Oracle提供了2種JDBC驅動程式:

◆  JDBC OCI驅動程式

◆  JDBC Thin驅動程式

使用JDBC OCI驅動程式建立連線的語句如下:

Connection con = DriverManager.getConnection("jdbc:oracle:oci8:@kkdb","TEST","TEST");

使用JDBC Thin驅動程式建立連線的語句如下:

Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:kkdb","TEST","TEST");

2.4 語句(Statement)

語句用於對資料庫傳送資料操縱的命令,透過語句物件,可以完成獲取結果集,對資料庫記錄進行增、刪、改等操作,語句分為以下三種型別:

●  簡單語句(Statement)與java.sql.Statement介面對應,用來執行簡單SQL命令;

●  預編譯語句(PreparedStatement)與java.sql.PreparedStatement介面對應,該類語句物件可以使用被預編譯的SQL語句以提高執行效率;

●  可呼叫語句(CallableStatement)與java.sql.CallableStatement介面對應,主要用來呼叫資料庫中定義的過程。儲存過程是一段程式碼,用來執行重複、定義明確的任務,這段程式碼被編譯後儲存於資料庫中。

2.5 結果集(Result)

結果集對應於java.sql.ResultSet介面。語句物件發出查詢命令,所有符合條件的記錄被取出後存在結果記錄集物件。結果集包含符合SQL語句中查詢條件的所有行,並且它透過一套get/set方法提供對這些行中資料的訪問。結果集類似於一個表,其中有查詢所返回的列標題及相應的值。

三、Weblogic7中配置JDBC

Weblogic Server有關JDBC的配置主要是指配置連線池(Connection Pool)和資料來源(Data)。

前面已經介紹了,JDBC的連線有兩種,一種是直接連線,另一種是池連線。Weblogic Server中的連線池(Connection Pool)就是用來存放池連線的。資料來源(DataSource)相當於客戶端程式和連線池的中介,想要獲得連線池中的連線物件,必須建立一個與該連線池相應的資料來源,然後透過該資料來源獲得連線。

使用連線池的好處:

☆ 節省時間  建立資料庫連線是很費時的。透過連線池,可以事先在連線池中建好一定數量的連線,有新的請求來到時可以直接拿一個建立好的連線使用,不用新建連線。

☆ 封裝資訊  使用連線池可以封裝連線資料庫系統所用的使用者資訊(帳號和密碼),這樣客戶端程式在建立連線時不用考慮資訊。

3.1 連線Oracle資料庫

3.1.1 配置startWLS.cmd後啟動Weblogic Server

要將Oracle在Weblogic中使用,首先要在Weblogic Server(我的Weblogic安裝在C盤)的啟動C:beaweblogic700serverbinStartWLS.cmd檔案中新增(我的Oracle使用預設安裝在D盤)的驅動程式D:oracleora92jdbclibclasses12.zip,所以在CLASSPATH語句中新增:

set CLASSPATH=%JAVA_HOME%libtools.jar;%WL_HOME%serverlibweblogic_sp.jar;%WL_HOME%serverlibweblogic.jar;D:oracleora92jdbclibclasses12.zip;%CLASSPATH%

單擊開始/程式/BEA WebLogic Platfo7.0/User Projects/myain/Start Server

3.1.2 啟動IE,在位址列輸入,回車,出現Weblogic Server登入頁面,輸入Username:Pass:,這裡我的都是training,請大家記住,因為在以後還會用到這個使用者名稱和密碼。單擊Sign In進入;

3.1.3 單擊Connection Pools

3.1.4 在右邊窗體中單擊Configure a new JDBC Connection Pool建立一個連線池,在該連線池的General選項卡中設定:

Name: oraclePool  (連線池名字[自定義])

URL: jdbc:oracle:thin:@localhost:1521:kkdb (資料庫連線URL字串,Oracle的典型配置:jdbc:oracle:thin:@host name:port:SID,其中host name代表主機名、port代表所用埠號、SID為Oracle資料庫的全域性資料庫名)

Driver Classname: oracle.jdbc.driver.OracleDriver

Properties: user=TEST

password=TEST

dll=ocijdbc9

protocol=thin

單擊Create建立;

Connections選項卡中做以下設定:

Initial Capacity: 5  (連線池中的初始連線數,預設值是1)

Maximum Capacity: 10  (連線池中最大連線數,預設值是1)

Capacity Increment: 1    (決定每次連線增加的連線數[當有新的連線請求而連線池中無空閒的連線時])

單擊Apply應用;

設定Targets選項卡

設定Targets-Server,即設定此連線池的目標伺服器。從左側Available列表中選擇一個伺服器,將其選到右側的Chosen列表中。單擊Apply應用。

3.1.5 配置資料來源testTxDataSource

  單擊控制檯左側域樹的JDBC/Tx Data Source節點,然後單擊右側的Configure a new JDBC Tx Data Source...

配置Configuration選項卡

Name: testTxDataSource

JNDI Name: jdbc/testTxDataSource

Pool Name: oraclePool

單擊Create建立

設定Targets選項卡

設定Targets-Server,即設定此連線池的目標伺服器。從左側Available列表中選擇一個伺服器,將其選到右側的Chosen列表中。單擊Apply應用。

至此,完成Oracle在Weblogic Server的JDBC的配置。你可以重啟Weblogic Server,如果不報錯就OK。

注:本文所有引數都以《JBuilder9+Weblogic7實戰篇之工具篇(ORACLE9i)》一文中配置的引數為主,SID為kkdb,登入使用者為TEST,密碼為TEST。如果你不是,請參照《JBuilder9+Weblogic7實戰篇之工具篇(ORACLE9i)》建立屬於你自己的SID和使用者。

我的文章首發牛耳論壇()和程式設計師論壇(),歡迎轉載,不過,請保留作者以及修訂者的名字,謝謝。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982636/,如需轉載,請註明出處,否則將追究法律責任。

相關文章