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