JBuilder9+Weblogic7實戰篇之工具篇(JDBC 1) (轉)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JBuilder9+Weblogic7實戰篇之工具篇(JDBC 2) (轉)UIWebJDBC
- JBuilder9+Weblogic7實戰篇之JSP使用JDBC篇 (轉)UIWebJSJDBC
- JBuilder9+Weblogic7實戰篇之工具篇(JDK) (轉)UIWebJDK
- JBuilder9+Weblogic7實戰篇之工具篇(Weblogic) (轉)UIWeb
- JBuilder9+Weblogic7實戰篇之工具篇(ORACLE9i安裝) (轉)UIWebOracle
- JBuilder9+Weblogic7實戰篇之Filter運用篇 (轉)UIWebFilter
- JBuilder9+Weblogic7實戰篇之Entity Bean運用篇(一) (轉)UIWebBean
- JBuilder9+Weblogic7實戰篇之工具篇(Weblogic7在JBuilder9中的配置) (轉)UIWeb
- JBuilder9+Weblogic7實戰篇Entity Bean運用(二) (轉)UIWebBean
- JBuilder9+Weblogic7實戰篇Entity Bean運用(四) (轉)UIWebBean
- JBuilder9+Weblogic7實戰篇Entity Bean運用(三) (轉)UIWebBean
- DirectShow之介面實戰篇(一) (轉)
- DirectShow之介面實戰篇(二) (轉)
- DirectShow之介面實戰篇(三) (轉)
- JBuilder9.0+Weblogic7.0實戰篇之Session Bean篇 (轉)UIWebSessionBean
- 機器學習實戰之開篇機器學習
- 足球戰術之Builder篇 (轉)UI
- JBuilder9.0+Weblogic7.0實戰篇之JSP+SERVLET篇 (轉)UIWebJSServlet
- Flutter實戰之動畫實現篇Flutter動畫
- Java 8 Stream之實戰篇Java
- Ant實戰篇 (一)(3) (轉)
- Ant實戰篇 (一)(4) (轉)
- 足球戰術之adapter篇 (轉)APT
- 【GNU/Linux實戰手記之Emacs篇 上】 (轉)LinuxMac
- GNU/Linux實戰手記之基本操作篇 (轉)Linux
- Flutter實戰之畫布使用篇Flutter
- Flutter實戰之基本佈局篇Flutter
- 【GNU/Linux實戰手記之安裝配置篇】 (轉)Linux
- .Net微服務實戰之DevOps篇微服務dev
- kubernetes實戰篇之dashboard搭建
- Docker小白到實戰之開篇概述Docker
- 足球戰術之observer及memento篇 (轉)Server
- Nginx入門到實戰(1)基礎篇Nginx
- Oracle工具篇之TkprofOracle
- ORACLE DBA常用SQL指令碼工具->管理篇(1) (轉)OracleSQL指令碼
- 持續整合之 Spring Boot 實戰篇Spring Boot
- kubernetes實戰篇之helm完整示例
- kubernetes實戰篇之helm使用技巧