摘要:比较了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