王琪
[摘要] 本文主要介紹Delphi下ADO+ODAC操作異構數(shù)據(jù)庫的方法,使用ODAC、ADO、TextFile以及包括Excel在內的4種數(shù)據(jù)庫平臺,完成了一次跨數(shù)據(jù)庫平臺的數(shù)據(jù)組織工作。
[關鍵詞] Delphi; ODAC; ADO; TextFile; Excel
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2012 . 05. 028
[中圖分類號]TP393[文獻標識碼]A[文章編號]1673 - 0194(2012)05- 0053- 02
1前言
“經(jīng)濟效益評價”軟件是利用油田效益評價分析系統(tǒng),進行單井效益評價。該軟件需要按月導入單井開發(fā)數(shù)據(jù),經(jīng)過費用分攤后得出每口井開發(fā)效果。導入的數(shù)據(jù)來源有兩個:一是來自于單井的井史數(shù)據(jù),二是來自于軟件本身SQL Server服務器的基本參數(shù)。本文主要介紹在Delphi環(huán)境下,分別讀取Oracle 和 SQL Server數(shù)據(jù),并最終生成Excel格式的數(shù)據(jù),供評價軟件使用。
2井史數(shù)據(jù)下載
井史數(shù)據(jù)保存在PDPMIS的Oracle數(shù)據(jù)庫中,目前已經(jīng)單軌運行的A2系統(tǒng)也提供了相應的視圖。所以我們需要讀取這些基于Oracle的數(shù)據(jù)。
軟件采用Delphi開發(fā),自然地,我們使用ODAC組件。Oracle 數(shù)據(jù)存取組件(ODAC) 庫為Borland Delphi,C++ Builder 以及 Kylix提供了一些非可視化的組件。它們用來存?。希颍幔悖欤尻P系數(shù)據(jù)庫系統(tǒng)。與BDE類似, ODAC 也是一種可供選擇的處理數(shù)據(jù)的方法。ODAC 直接使用 Oracle 調用接口(OCI)。 OCI 是一種允許應用程序開發(fā)人員使用第三方開發(fā)語言存取Oracle數(shù)據(jù)服務器的過程或函數(shù)以及控制所有的SQL語句執(zhí)行狀態(tài)的應用程序接口(API)。OCI 通過一個動態(tài)運行庫(ORA*.DLL)提供了一個標準的數(shù)據(jù)庫存取庫及函數(shù),以在應用程序中建立連接。也可以使用ODAC的Net選項而無需在客戶機上安裝Oracle客戶端來連接到Oracle。在這種情況下,ODAC僅需要TCP/IP協(xié)議的支持,從而可以創(chuàng)建真正的、最小的數(shù)據(jù)庫應用程序。
使用ODAC有以下優(yōu)勢:
(1) 選擇Net選項使客戶機上不再需要安裝 Oracle 客戶端。
(2) 不需要分發(fā)、安裝及配置 BDE 及 ODBC。
(3) 允許用戶使用許多 Oracle 的特殊功能。
(4) 提供自動鎖定及刷新記錄機制。
(5) 允許通過使用多線程來執(zhí)行長時間的存儲過程。
(6) ODAC 組件的界面(方法,屬性)和標準的BDE數(shù)據(jù)存取組件(TDatabase,TQuery,…)非常相似。
由于下載的數(shù)據(jù)不完整(沒有包括井的靜態(tài)參數(shù)),所以需要將數(shù)據(jù)暫存起來,這里采用Access數(shù)據(jù)庫作為中間文件(因為這是微軟各版本的Windows都默認提供的)。另外,這個暫存文件還起到了數(shù)據(jù)備份的作用,如果只需要重新導出Excel文件時,不用再次下載了。
利用ADO訪問Access是最直接的。ADO是一套COM(Component Object Model,組件對象模型)組件(DLLs),它允許用戶像訪問電子郵件和文件系統(tǒng)一樣訪問數(shù)據(jù)庫。使用ADO編寫的應用程序不需要BDE。ADO編程模型圍繞著幾個ADO對象而建立,這些對象為訪問各種數(shù)據(jù)源提供多種方法。這些對象提供連接數(shù)據(jù)源、查詢與更新記錄集、報告錯誤的功能。Delphi通過幾個VCL組件通過訪問這些對象的封裝組件。
在程序中添加一個TOraSession 和 一個 TOraQuery,以及一個TADOCommand組件。
程序逐行讀?。希颍幔悖欤鍞?shù)據(jù),經(jīng)過一定的轉換,生成一條Insert語句,插入到Access。
3單井靜態(tài)數(shù)據(jù)下載
這些數(shù)據(jù)是由采油礦人員每月手工導入的,但相鄰兩個月之間數(shù)變化不大,所以為了減少不必要的中間環(huán)節(jié),不妨從SQL Server數(shù)據(jù)庫中下載下來,一起放到Excel中,只需要單獨修改個別發(fā)生變化的井即可。
這項工作需要一個TADOQuery來連接到SQL Server,仍然用前面的TADOCommand 來執(zhí)行更新。同樣,先讀取一行SQL Server數(shù)據(jù),生成一條Update語句,來更新Access。
4輸出Excel
評價軟件對Excel文件要求不高,只需要逗號分隔即可,其實就是*.CSV,但擴展名必須是“.xls”。所以代碼比較簡單。
5軟件附加功能介紹
(1) 軟件能夠在啟動時檢查 “jj.mdb”(Access數(shù)據(jù)庫)文件是否存在,否則自動建立文件和相應的數(shù)據(jù)表。
(2) 為了能夠對單井的靜態(tài)信息更新可以根據(jù)用戶的需要進行修改,我們創(chuàng)建列表。
6結論與認識
本文介紹了整個軟件的實現(xiàn)過程,在Delphi這個統(tǒng)一的IDE下,分別使用了ODAC、ADO、TextFile等多種方式,使用了包括Excel在內的4種數(shù)據(jù)庫平臺,完成了一次跨數(shù)據(jù)庫平臺的數(shù)據(jù)組織工作,作為效益評價軟件的輔助工具,在實際應用中起到了一定的作用。同時也看到目前軟件開發(fā)中存在的問題:
目前的軟件開發(fā)都會根據(jù)各自的需求選用相應的數(shù)據(jù)庫平臺,這就造成了軟件間數(shù)據(jù)的共享瓶頸,所以在今后的軟件開發(fā)中一定要在兼顧數(shù)據(jù)來源的前提下,理性地選擇數(shù)據(jù)庫平臺,以提高軟件實用性、兼容性,減少不必要的中間環(huán)節(jié)。
主要參考文獻
[1] 梁水,李方超,賽奎春. Delphi開發(fā)技術大全[M]. 北京:人民郵電出版社,2007.