Delphi两个经典数据库控件集详解

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Delphi两个经典数据库控件集详解
Delphi强大的数据库功能一直是Delphi程序员们的最爱,然而,BDE强大功能的后面,却有太多的限制。

当程序员们绞尽脑汁编出短小精悍的程序而兴高采烈时,他们不得不尴尬的面对发布程序时BDE那几兆大的附加文件。

有没有其他控件,既可以使用Delphi强大的数据库功能而又不要那几兆大的BDE?答案时肯定的,那就是使用第三方控件或者Delphi5的ADO控件。

在这里,我将具体介绍Delphi第三方数据库控件集:DiamondAccess1.7和ODBCExpress5.06。

DiamondAccess控件集使用微软数据访问对象DAO访问数据库。

利用此控件集访问数据库,可以完全摆脱BDE,当然,发布程序时也就无需考虑BDE的麻烦了。

而且,DAO的访问速度比BDE更快。

ODBCExpress控件集使用大家都很熟悉的ODBC访问数据库,只要设置好数据源,就可以访问大部分类型的数据库;而且,使用ODBC接口的程序具有更大的可移植和通用性。

ADO数据库访问控件在Delphi5中已经加入进来,假如要在Delphi4或者更低的版本使用ADO,就必须使用第三方控件,比如:DiamondDAO,同样可以提供强大的更能。

以下,我们通过实例的形式具体介绍DiamondAccess1.7和ODBCExpress5.06的使用,我们将利用这两个控件集实现同样的功能:在DBGrid中列出数据库所有数据,通过输入检索数据。

通过这些实例,我们可以基本了解以下内容:1)Delphi 中应用这两个控件集访问数据库的基本技术;2)发布采用这两个控件集的程序需要注重的问题和基本方法;3)两个控件集的优缺点和下载安装方法;
DiamondAccess控件集演示
>一、控件说明DiamondAccess是一套高速连接MicrosoftAccess数据库的控件集,包括TDAODatabase,TDAOTable,TDAOQuery和TDAOQueryDef四个控件。

它不依靠BDE访问数据库,而是使用微软的DataAccessObjects3.5和JetDatabaseEngine访问数据库,利用Access自带数据库引擎,DiamondAccess可以提供高速的数据库访问接口。

图1DiamondAccess控件集
控件TDAODatabase用于定义要访问的Access数据库,主要属性是DataBaseName;TDAOTable和Delphi自带数据库控件Tabel相似;TDAOQuery和Delphi自带控件Query相似;TDAOQueryDef和DAOQueryDefobject一起使用,平时编程中较少用到。

二、演示程序现在,我们用实例了解DiamondAccess的用法。

在程序中,我们将用到TDAODatabase 控件,TDAOQuery控件,Delphi自带Datasource控件,Edit和Button控件。

程序打开数据库DataBase的main表并列出所有数据,Edit1控件用于输入数据检索。

为了更好的了解,我们先看看main的表结构。

1)数据库DataBase表main的结构字段名数据类型字段大小/格式ID自动
编号长整型姓名文本50电话文本50生日日期/时间常规日期说明文本100
表1数据库DataBase表main的结构
2)程序中控件属性为了程序有更好的可迁移性,我们尽量不再属性面板中设置控件属性,而是在程序代码中设置。

以下属性,只是控件最基本的要求,进一步设置请看程序源代码。

控件属性Form1Caption:DiamondAccess演示;DAODatabase1默认;DAOQuery1Database:DAODatabase1;SQL:selectfrommain;DBGrid1DataSource:DataSource1;DataSource1Dataset:DAOQuery1;Edit1
Text:空;Button1Caption:检索
表2DiamondAccess演示程序控件及控件属性
图2控件属性
3)程序代码程序在Form1的Create时间中设置控件的主要属性。

procedureTForm1.FormCreate;varbasename:string;begin//定义数据库,这里是程序所目录的Data子目录下的database1.mdb文件baseName:=ExtractFilePath+;DAODatabase1.DatabaseName:=basename;tryDAODatabase1.Open;//打开数据库daoquery1.Open;//执行“Selectfrommain”语句exceptShowMessage;Halt;end;end;点击按钮Button1,检索表main中姓名等于Edit1输入值的记录。

procedureTForm1.Button1Click;var strsql:string;//用于定义DAOquery1的SQL语句beginstrsql:=;iftrim<>thenstrsql:=strsql++++edit1.text+;form1.daoquery1.close;form1.daoquery1.sql.clear;form1.daoquery1.SQL. add;Form1.setfocus;tryform1.daoquery1.open;exceptform1.daoquery1.execute;end;end;三、下载与安装DiamondAccess1.7可以在凌云天地下载,安装与一般控件安装相同。

四、要注重的地方1)发布程序应用DiamondAccess控件的程序,在发布时要注重目标计算机是否安装有DAO3.5或者以上版本,假如没有,程序执行时会出现要求安装的提示。

DAO3.6安装版下载:http:///support/files/dao360.zip。

2)关于Access版本的限制现在的DiamondAccess只支持Access97版本,程序中最好使用Access97数据库。

3)日期格式的非凡说明日期数据的检索,日期格式要求与Access的日期格式相同,不可与Delphi的数据库的日期格式相同。

试举一例:检索两个时间段之间的所有数据,这两个时间由控件:datetimepick
er1和datetimepicker1来决定,那么,SQL语句如下:DAOquery1.sql.add++formatdatetime+);在这里,我们特意转换时间格式为:“mm/dd/yyyy”格式格式,并且,时间用“#”包围起来。

ODBCExpress5.06控件集演示
一、控件说明ODBCExpress控件集是利用ODBC快速访问数据库的控件,与DiamondAccess 不同,ODBCExpress可以访问不同类型的数据库,并不局限于Access数据库。

所以,ODBCExpress具有较大的灵活性。

ODBCExpress控件集包括19个控件,实际上分为三类:核心控件,用于连接和查询数据库;可视数据控件;不可见控件。

如图:
图3ODBCExpress控件集二、演示程序这个程序演示了如何在程序中动态设定DSN数据源,如何动态载入数据,同时,简单演示了一个查询。

所用控件有:THDBC控件,用于与DataSource建立连接;OEDataset控件;DataSource控件;DBGrid控件,Edit控件和一个Button控件。

所用控件属性如下:控件
属性Form1Caption:ODBCExpress5.06演示;Hdbc1默认;OEDataset1hdbc:Hdbc1;DBGrid1DataSource:DataSource1;DataSource1Dataset:OEDataSet1;Edit1Text:空;Button1Caption:检索
表3ODBCExpress5.06演示程序控件属性
程序中所用数据库和DiamondAccess演示中数据库结构相同。

以上控件的其他属性将在程序代码中设置。

图4ODBCExpress5.06演示程序
程序代码程序在Form1的Create中设定数据源DSN,同时设置其他控件属性。

其中,设定DSN数据源将用到注册表操作,请注重。

procedureTForm1.FormCreate;varregisterTemp:TRegistry;
bData:arrayofbyte;begin//以下程序设置DSN数据源;registerTemp:=TRegistry.Create;//建立一个Registry实例withregisterTempdobeginRootKey:=HKEY_LOCAL_MACHINE;//设置ROOT;ifOpenKey;//设定DSN为“MyAccess”;endelsebeginshowmessage;//数据源描述;WriteString;//驱动程序DLL文件Wri
teInteger;WriteString;WriteInteger;WriteString;//用户名称bData:=0;WriteBinaryData;WriteBinaryData;endelsebeginshowmessage;WriteInteger;//缓冲区大小WriteInteger;//页超时WriteInteger;//支持的线程数目WriteString;endelsebeginshowmessage;
exit;end;CloseKey;Free;end;//以下程序设置控件属性;Form1.Hdbc1.Terminate;Form1.Hdbc1.DataSource:=;//DSN名字erName:=;//数据库用户名Form1.Hdbc1.Password:=;//用户密码Form1.Hdbc1.Connect;OEDataSet1.Table:=;//数据表为mainOEDataSet1.sql:=;OEDataSet1.Open;datasource1.dataset:=OEdataset1;dbgrid1.DataSource:=datasource1;end;以上程序设置DSN是重要的一部分,这样才使程序具有真正的可移植性。

以下代码为检索部分。

procedureTForm1.Button1Click;beginifedit1.text=then//是否输入数据beginshowmessage;exit;end;OEDataSet1.Hstmt.ExecAsync:=True;OEDataSet1.Table:=;OEDataSet1.sql:=+++edit1.text
+;OEDataSet1.open;end;注:以上DSN设置部分参考了大富翁论坛贴子,在此表示感谢。

三、下载与安装ODBCExpress5.06在男儿有志当凌云下载。

执行Setup安装。

四、要注重的地方1)版本问题ODBCExpress5.06以前的版本在Delphi5中使用时,将出现一些错误,如:关闭使用了此控件集的程序错。

建议Delphi5用户下载ODBCExpress5.06及以后版本。

2)程序发布问题以上演示程序在程序窗口创建时定义DSN数据源,并不是太好的方法,一是延长程序启动时间,二是每一次程序执行都设置一次,并不太好。

建议适当修改以上程序,使其更加合理。

总结
以上两个控件集是Delphi不使用BDE的第三方控件集中的佼佼者,当然,与以上控件集具有同样功能的控件集有很多,比如ODBC98就和ODBCExpress一样应用ODBC访问数据库,而且功能强大,读者假如有爱好可以自己研究。

在这两个控件集中,笔者更加欣赏DiamondAccess,它方法数据库的速度和使用上的简便是ODBCExpress所欠缺的。

相关文档
最新文档