摘要:比較了Delphi中應用ODAC和BDE兩種方式連接Oracle的不同,介紹了基于ODAC方式的數據庫應用系統的開發方法,并給出了Delphi中應用ODAC開發數據庫管理系統的幾個細節。
關鍵詞: ODAC ?BDE ?控件 ?Delphi
前言:隨著網絡知識的普及和數據庫技術的發展,如今的軟件編程技術已經從單機版本向網絡化、對象化發展,網絡化編程技術是現代計算機技術的一個主要發展方向。應用這項技術,我們可以將現在油田中的一些應用軟件移植到網絡上,這樣只要擁有可以上網的計算機,我們就能夠在任何時候、任何地方利用網絡上的任何應用軟件進行工作,這將擴大我們的辦公空間。在油田生產中我們需要處理大量的數據,而且我們大部分數據是共享的,因此在油田中開發出基于網絡的數據庫應用軟件是我們軟件開發者的一個研究方向和軟件編制工作的重點。
一、BDE與ODAC的簡介
BDE(Borland Database Engine)數據庫引擎是Delphi數據庫應用程序和數據資源的橋梁,BDE提供了一套簡單的統一的接口。因為應用程序安裝時需要安裝BDE,所以應用BDE方式存取數據時的安裝工作比較麻煩;在基于Oracle的客戶/服務器應用程序中,使用BDE不能夠獲得服務器的特殊特征,不能使用更多的系統資源,降低數據處理速度、發布和管理程序繁瑣。
Oracle Data Access Components(ODAC)是存取Oracle數據庫的一組非可視化的組件。ODAC直接使用Oracle調用接口(OCI)。該接口以動態運行庫的方式提供一個標準數據庫訪問和取回函數庫,它能夠被鏈接到應用程序中。
二、ODAC數據存取組件的優勢
* 直接訪問Oracle數據,不需要分發、安裝和配置BDE和ODBC。
* 采用NET方式時,不需要安裝和管理 Oracle 客戶端軟件。
* 極高速的數據存取,高性能地控制拿取大數據塊。
* 自動化地更新數據,自動化地數據鎖住和刷新。
* 編譯成的應用程序非常小,將應用程序安裝到其它計算機的過程非常簡單。
* 支持 Oracle的特殊特性: BLOB、CLOB 數據類型,對象,數組,引用,嵌套表。
三、技術實現
數據庫管理系統共包括數據瀏覽、存儲和打印三個模塊。在該系統中,我們采用的是ODAC的NET方式,這樣應用程序可以直接通過TCP/IP協議來連接Oracle數據庫,而不需要安裝Oracle客戶端,使安裝工作更簡單。
1、數據瀏覽模塊
在該模塊中,我們將Oacle數據庫中的表、表的字段設計成可選的,用戶可根據自己的需要選擇要瀏覽的表及表中的字段;也可以自己輸入條件,選取表中部分數據。在該模塊中我們應用的是TOraSession 和ToraQuery兩個控件,前者用來控制服務連接,后者用來執行查詢,操作記錄集。
首先,要配置Oracle數據庫,要給出Oracle服務器的地址、偵聽端口號和數據庫名字。配置數據庫的語句如下:
Oras.ConnectString:=syn_u+'/'+syn_p+'@'+server_ip+'::'+db_str;
Oras.ConnectPrompt := False; ? ? ? Oras.Options.Net := True;
Oras.Connect;
查詢時,將SQL語句輸入到ToraQuery的SQL屬性中,將其session屬性設置為oras就可以連接數據庫執行SQL語句對數據庫中的數據進行相應的操作了。其使用方法如下:
if oraq_out.Active then ? ? ? oraq_out.Close;
oraq_out.Session:=oras; ? ? ? ?oraq_out.SQL.Clear;
oraq_out.SQL.Add(sqlstring); ? ? ? ?oraq_out.Open;
2、數據存儲模塊
該模塊分為兩個部分,一個是將Oracle數據庫中的數據轉存為Dbase數據庫表,第二部分是將相同結構的Dbase單機數據向Oracle的數據轉換。在將Oracle數據庫中的數據轉存為Dbase數據庫表時,我們設計的也是表及表中字段可選。連接Dbase數據庫我們使用的Delphi中TTable控件。在這里,我們是動態的創建這個控件,動態的建立的Dbase數據庫表 。程序代碼如下:
tablec:=ttable.Create(self); ?tablec.Active:= false;
tablec.TableName:=tablename; ?tablec.TableType:=ttfoxpro;
tablec.DatabaseName:=tablepath; ?tablec.FieldDefs.Clear;
while not oraquery1.Eof do ? begin
if oraquery1.FindField('DATA_TYPE').AsString = 'CHAR' then
tablec.FieldDefs.Add ? ? ? ? ? ? ? ? (oraquery1.fieldbyname('COLUMN_NAME').asstring, ? ? ? ? ? ? ? ? ftstring,oraquery1.fieldbyname('DATA_LENGTH').asinteger, ? ? ? ? ? ? ?false) ? ? else if oraquery1.FindField('DATA_TYPE').AsString = 'NUMBER'
then ? ? ? ? ? ? ? ? ? ? ? ? BEGIN
…… ? ? ? ? ? ? ? ? ? ? ? ?END;
oraquery1.Next; ?end; ? tablec.CreateTable;
四、 結論
采用ODAC使得連接、操縱數據庫更加方便、容易,能夠適應油田生產中處理大量數據的需要。應用ODAC技術開發的數據庫應用程序,與用戶之間具有良好的交互性,響應迅速,能夠達到日常工作的基本要求。采用ODAC技術訪問數據庫能夠減輕數據庫服務器的負載,提高數據庫的執行效率。ODAC技術在數字化油田中有著廣闊的應用前景,為我們早日實現辦公網絡化提供了更為可靠的技術保障。
作者簡介:
賈麗杰 :女,1990年08月21日出生, 2012年畢業于黑龍江八一農墾大學計算機科學與技術專業,現在大慶油田第五采油廠信息中心信息情報室工作; Email:jlj@petrochina.com.cn黑龍江省大慶市郵編:163000