搜档网
当前位置:搜档网 › Delphi两个经典数据库控件集详解

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

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

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://https://www.sodocs.net/doc/474384052.html,/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名字https://www.sodocs.net/doc/474384052.html,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所欠缺的。

相关主题