王琪
[摘要] 本文主要介绍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.