基于ODBC-JDBC的數(shù)據(jù)庫連接策略的實現(xiàn)與優(yōu)化論文
【摘 要】使用JSP技術(shù)開發(fā)動態(tài)交互式Web信息系統(tǒng)是當今Internet主流技術(shù)之一,隨著網(wǎng)絡應用和電子商務的迅速發(fā)展,站點與數(shù)據(jù)庫連接的操作越來越頻繁,也越來越復雜。通過分析現(xiàn)有的數(shù)據(jù)庫連接技術(shù),選擇使用ODBC-JDBC橋驅(qū)動程序作為JDBC的驅(qū)動程序,介紹其連接策略、實現(xiàn)方法,并對其從驅(qū)動程序、連接對象、執(zhí)行對象等方面進行優(yōu)化策略分析。
【關(guān)鍵詞】ODBC-JDBC,實現(xiàn)方法,優(yōu)化策略
1 數(shù)據(jù)庫連接技術(shù)介紹
數(shù)據(jù)庫軟件設計開發(fā)不可避免地應用數(shù)據(jù)庫連接,建立數(shù)據(jù)庫連接,與數(shù)據(jù)庫進行通信,執(zhí)行SQl語句并檢索查詢結(jié)果。目前實現(xiàn)上述活動的常用技術(shù)是ODBC和JDBC。
ODBC是Open DataBase Connectivity的縮寫,是微軟公司提供的應用程序接口,用于訪問數(shù)據(jù)庫。使用結(jié)構(gòu)化查詢語言作為其數(shù)據(jù)庫語言,并提供插入、修改和刪除數(shù)據(jù)庫以及從數(shù)據(jù)庫中提取信息的功能。
JDBC是Java DataBase Connectivity的縮寫,是Sun Microsystems提供的Java API一部分,它定義了一組API對象以及與數(shù)據(jù)庫進行交互的方法。
ADO是Activex Data Objects的縮寫,是一個用于存取數(shù)據(jù)源的COM組建。提供了編程語言和統(tǒng)一數(shù)據(jù)訪問方式OLE DB的一個中間層。允許開發(fā)人員編寫訪問數(shù)據(jù)的代碼而不用關(guān)心數(shù)據(jù)庫如何實現(xiàn),而只關(guān)心到數(shù)據(jù)庫的連接。
ADO.net是在.net編程環(huán)境中優(yōu)先使用的數(shù)據(jù)訪問接口。他提供了數(shù)據(jù)訪問的互用性和可伸縮性。
ADO.net是一組用于和數(shù)據(jù)源進行交互的面向?qū)ο蟮念悗。通常情況下,數(shù)據(jù)源是數(shù)據(jù)庫,但同樣也能夠是文本文件、Excel表格或者是XML文件。
2 Java中連接技術(shù)選擇
ODBC使用的是C語言接口,對于Java而言,對本地C語言代碼的調(diào)用在應用程序的安全性、實現(xiàn)性、健壯性以及可移植性等方面存在缺陷,束縛了ODBC驅(qū)動程序在Java應用程序中的應用。
盡管Java中存在的Java.io包提供了豐富的類和接口,但是通過這些類和接口訪問的數(shù)據(jù)是以流的形式表示的,因此對于訪問存儲在外部數(shù)據(jù)提供的程序,比如SQLServer、Oracle和Access中的數(shù)據(jù)的所有Java應用程序而言,JDBC是彌補缺陷的良藥,是必須的。
在Java語言中, JDBC ( Java DataBaseConnection)是應用程序與數(shù)據(jù)庫溝通的橋梁,即Java語言通過JDBC技術(shù)訪問數(shù)據(jù)庫。JDBC是一種“開放”的方案,它為數(shù)據(jù)庫應用開發(fā)人員、數(shù)據(jù)庫前臺工具開發(fā)人員提供了一種標準的應用程序設計接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應用程序。
JDBC提供兩種API,分別是面向開發(fā)人員的API和面向底層的JDBC驅(qū)動程序API,底層主要通過直接的JDBC驅(qū)動和JDBC-ODBC橋驅(qū)動實現(xiàn)與數(shù)據(jù)庫的連接。
一般來說,Java應用程序訪問數(shù)據(jù)庫的過程是:①裝載數(shù)據(jù)庫驅(qū)動程序;
、谕ㄟ^JDBC建立數(shù)據(jù)庫連接;
、墼L問數(shù)據(jù)庫,執(zhí)行SQL語句;
、軘嚅_數(shù)據(jù)庫連接。
對于共享資源,有一個很著名的設計模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配 釋放所造成的問題。為解決上述問題,可以采用數(shù)據(jù)庫連接池技術(shù)。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個“緩沖池”。預先在緩沖池中放入一定數(shù)量的連接,當需要建立數(shù)據(jù)庫連接時,只需從“緩沖池”中取出一個,使用完畢之后再放回去。我們可以通過設定連接池最大連接數(shù)來防止系統(tǒng)無盡的與數(shù)據(jù)庫連接。更為重要的是我們可以通過連接池的管理機制監(jiān)視數(shù)據(jù)庫的連接的數(shù)量、使用情況,為系統(tǒng)開發(fā)、測試及性能調(diào)整提供依據(jù)。
因此,為了提高訪問數(shù)據(jù)庫數(shù)據(jù)的效率,Java應用程序選擇了JDBC,使用ODBC-JDBC橋驅(qū)動程序連接數(shù)據(jù)庫,從JDBC訪問ODBC數(shù)據(jù)源。
3 連接策略的實現(xiàn)
開發(fā)基于ODBC-JDBC的數(shù)據(jù)庫連接應用程序步驟如下:①為數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)源②導入Java.sql包③加載驅(qū)動程序④加載將連接該數(shù)據(jù)源的驅(qū)動程序,使用Class.forName()方法,將給定的類加載到Java虛擬機中⑤創(chuàng)建連接對象DriverManager類試圖找到一個能夠連接至URL中指定的數(shù)據(jù)庫的驅(qū)動程序。這個類跟蹤已注冊的驅(qū)動程序,當調(diào)用getConnection()方法時,它會搜索整個該驅(qū)動程序列表,直到找到一個能夠連接至URL中指定的數(shù)據(jù)庫的驅(qū)動程序。加載此驅(qū)動程序后,使用getConnection()方法建立與數(shù)據(jù)源的連接。此方法中有3個接收參數(shù),分別表示數(shù)據(jù)源的名稱、數(shù)據(jù)源連接所使用的類型以及用戶名、密碼。
⑥創(chuàng)建執(zhí)行對象并執(zhí)行
一旦建立連接,就使用該連接將SQL語句傳遞給它所連接的數(shù)據(jù)庫。然后使用Connection類的createStatement()方法創(chuàng)建Statement接口實例。執(zhí)行查詢最有效的方法是使用Statement接口中的executeQuery()方法,接收SQL查詢字段作為參數(shù),并返回包括查詢結(jié)果的ResultSet。
執(zhí)行更新數(shù)據(jù)庫,包括插入數(shù)據(jù),修改數(shù)據(jù)或者刪除數(shù)據(jù),一方面需要編寫數(shù)據(jù)更新的SQL語句,它不會將結(jié)果作為ResultSet返回,而是返回一個整數(shù),表示受該語句影響的行數(shù)。另一方面使用executeUpdate()方法。
、呓邮铡⒋娣艌(zhí)行結(jié)果
使用Statement對象構(gòu)建并執(zhí)行SQL語句以執(zhí)行對數(shù)據(jù)庫的操作,操作結(jié)果返回給ResultSet對象。
⑧關(guān)閉對象和連接
關(guān)閉ResultSet對象、Statement對象、關(guān)閉連接。
4 連接策略的優(yōu)化
4.1 連接中驅(qū)動程序的優(yōu)化使用本地API部分Java驅(qū)動程序的速度要比基于ODBC-JDBC橋的數(shù)據(jù)庫連接速度快,它將JDBC調(diào)用轉(zhuǎn)換成對DBMS客戶端API的調(diào)用,它使用本地數(shù)據(jù)庫API的Java本地接口訪問數(shù)據(jù)庫。
與ODBC驅(qū)動程序一樣,它也需要在客戶機上使用本地二進制代碼,并要求安裝和配置數(shù)據(jù)庫。隨著網(wǎng)絡技術(shù)、中間件技術(shù)的縱深發(fā)展和不斷完善,使用網(wǎng)絡協(xié)議和中間件與服務器進行通信,然后服務器將該協(xié)議和中間件轉(zhuǎn)換成特定于DBMS的方法調(diào)用,這是JDBC網(wǎng)絡純Java驅(qū)動程序下的數(shù)據(jù)庫連接,此驅(qū)動程序開始獨立于數(shù)據(jù)庫,將JDBC轉(zhuǎn)換成本地專有數(shù)據(jù)庫調(diào)用,還支持對多個后端數(shù)據(jù)庫進行訪問。
4.2 執(zhí)行對象選擇的優(yōu)化
在數(shù)據(jù)庫連接過程中存在多次執(zhí)行同一操作的情況,為了提高SQL語句的接收、編譯效率,可用PreparedStatement()方法創(chuàng)建PreparedStatement對象,因為PreparedStatement對象用于預編譯的SQL語句,可以接收一個或者多個參數(shù)作為輸入?yún)?shù),提高了效率。另外它還增添了設置值所需要的一整套方法,可以將這些方法發(fā)送到數(shù)據(jù)庫以代替參數(shù)的占位符。
4.3 連接對象的優(yōu)化
使用連接池是實現(xiàn)數(shù)據(jù)訪問優(yōu)化的重要途徑之一。如果每次Web應用接受到請求,就向數(shù)據(jù)庫要求一個連接,當執(zhí)行完就通知數(shù)據(jù)庫中斷連接,這樣的方式將會耗費大量的時間與資源。而連接池的運作方式是一開始向數(shù)據(jù)庫要求很多Connection連接存儲在一個Pool池內(nèi),讓需要的人從連接池中取Connection,等到用完之后再放回連接池,從而讓Web應用與數(shù)據(jù)庫之間能夠獲得最大的執(zhí)行效率。
5 結(jié)束語
數(shù)據(jù)庫連接的實現(xiàn)是數(shù)據(jù)庫軟件開發(fā)過程中必不可少的組成部分,數(shù)據(jù)庫連接的優(yōu)化關(guān)系到數(shù)據(jù)查詢、更新的執(zhí)行效率,成為衡量系統(tǒng)開發(fā)性能的重要指標,因此數(shù)據(jù)庫連接策略的實現(xiàn)和優(yōu)化是一項系統(tǒng)工程,值得我們在開發(fā)實踐中不斷的探索和挖掘。
參考文獻
[1]王 強.高校綜合人力資源管理系統(tǒng)的數(shù)據(jù)庫優(yōu)化策略研究[J].電腦知識與技術(shù),2010,17(10):50-51.
[2]孫鑫鴿,陳 剛,孫小玲.基于JDBC的數(shù)據(jù)庫連接池技術(shù)的研究與設計[J].計算機與信息技術(shù),2007,15(5):61-62.
[3]王秀義.基于JDBC的數(shù)據(jù)庫連接池及實現(xiàn)[J].計算機系統(tǒng)應用,2005,22(4):43-45.
【基于ODBC-JDBC的數(shù)據(jù)庫連接策略的實現(xiàn)與優(yōu)化論文】相關(guān)文章:
優(yōu)化農(nóng)機裝備結(jié)構(gòu)的策略分析論文05-05
公共體育教學現(xiàn)狀與優(yōu)化策略論文02-18
淺談基于RFID 的會議簽到系統(tǒng)設計與實現(xiàn)論文02-20
基于智能優(yōu)化算法的Wiener模型辨識論文提綱12-05
提升網(wǎng)站圖片的優(yōu)化效果的幾種策略淺析的論文03-23
企業(yè)數(shù)據(jù)庫安全防護及維護策略論文11-11
淺談基于Openstack 的網(wǎng)絡攻防實驗平臺設計與實現(xiàn)論文02-20
醫(yī)療空間環(huán)境與優(yōu)化設計策略論文提綱11-17
- 相關(guān)推薦