基于Delhpi平台的数据库程序设计研究
2011-10-16鲍海燕
鲍海燕
(晋中学院计算机科学与技术学院,山西 晋中 030600)
Delphi是Inprise公司开发的可视化编程环境,是当今世界上最快的编辑器,最为先进的数据库技术,适应于多种数据库结构。Delphi独特的Data-A-ware构件,不需任何代码就可很快做出一个相当精巧的数据库程序,而且可以在开发期就看到运行期的结果。
在数据库程序设计原理的基础之上,通过运用Delphi数据库系统各组件功能以及改进数据库的存取方法,大大提高了编程效率。
1 Delphi数据库程序设计的原理
Delphi开发的数据库应用程序提供了管理、存储和维护信息的方法,采用多种多样的方式管理信息。Delphi自带四十多个预先建立的数据库组件,借助于DBMS的API接口函数,提供可视化编程环境。数据库程序设计的原理是采用数据库组织一定结构的数据,通过数据库管理系统管理数据信息。前台使用数据库应用程序可对数据库管理系统存储的数据进行定义、操作、控制。
Delphi包含了集成的代码编辑器、Database Formwizard、加速可浏览的数据库表单、DataModule Designer以及用于多个表单间的数据访问共享。组件面板的Data Access提供用于连接数据源的组件,Data Controls中的数据可视化组件用于从数据库获得数据或送数据到数据库。ADO页的组件使用ActiveX Data Objects技术通过OLE DB访问数据库信息,Inter-Base页的组件用于直接访问InterBase数据库。
2 Delphi数据库组件功能应用
2.1 数据访问组件
数据访问控件在Delphi组件面板的Data Access选项卡上。访问数据库中的一个或多个表的字段需要用到TTable、TQuery和TStoredproc三个控件。学习者对它们的进行操作时可以将这些控件视为“虚拟”的数据库,即对数据库操作。Delphi中常用的数据库访问控件及其功能应用总结见表1.
表1 Delphi中常用的数据库访问控件及其功能应用Tab.1 The common database access control of Delphi and its functions application.
2.2 数据库的字段对象
Ttable和TQuery控件中有一个TField类型的属性Fields,Fields是TField类型的对象列表。字段对象TField对记录字段可能出现的每一种数据类型都有一个相对应的、独立的TField类型。在应用程序中使用Fields Editor可以为数据库表中的字段创建相应的静态的TField对象。
字段对象在应用程序中可以动态生成,也可以通过字段编辑器Fields Editor创建静态的,它们虽然在设计和运行阶段都是不可见,但是它们都拥有自己的属性、方法和事件,因此在应用程序中可以对字段对象进行控制和访问。
2.3 数据浏览控件
数据浏览控件页上的控件,主要用于设计用户界面,对数据库中的数据进行浏览、编辑、插入、删除等操作。数据浏览控件为开发Delphi数据库应用程序提供可视化的用户界面,应用程序无论是访问本地数据库中的数据文件,还是访问远程数据库服务器中的数据文件,用户界面都是一致的,即数据库的物理位置对数据浏览控件是透明的。Delphi中常用的数据库浏览控件有:TDBGrid控件,用于在控件中显示和编辑整个表或者整个数据集,以网格的形式显示数据库中的字段信息;TDBNavigator控件,提供了一组按钮用于数据库表中的导航,编辑修改,插入,删除记录以及刷新数据的显示;除此之外,还有 DBtext,DBMemo,DBEdit,DBImage,DBListBox等控件用于显示字段。
2.4 各控件之间的联系
Delphi数据库程序设计里最重要的关键组件是与数据库连接的TTable控件(Ttable或TADOTable组件),这个数据库连接控件负责连接数据库文件中的表。通过此控件的相关方法、属性、事件执行新增、编辑、删除、取用数据等操作,也可直接连接。当连接控件连接数据库文件中的表后,表的内容无法连接控件并直接交付给数据库浏览控件(如DBGrid)显示出来,必须由DataSource组件来解析表的内容,然后将解析后的表的内容交付给数据库浏览控件(如DBGrid)显示出来,如图1所示。
图1 控件间的联系Fig.1 The connection between the controls
3 Delphi中数据库的连接方法
3.1 BDE 方法
Delphi对数据库的操作可以利用BDE(数据库引擎)进行。BDE数据库应用程序首先利用Delphi提供的数据库控件与BDE建立联系,然后通过BDE与数据库联系。它主要对Delphi数据库的应用程序所使用的别名进行管理,配置驱动程序等信息。利用它实现与相应数据库应用程序的链接。
BDE被自动包含在Delphi中。应用程序并不需要直接操作BDE,仅需要连接数据访问组件和BDE,再由BDE去访问数据库,即可完成对数据库的操作。对于本地数据库,用户只需关心Delphi中的数据组件即可。
3.2 ADO 方法
ADO是Active Data Object的简称,与 BDE不同,ADO是Microsoft推出的新一代数据访问规范,是微软提供访问数据库的接口,可以快速访问各种数据库资源。ADO技术提供了一个高性能、高兼容性的数据访问接口,它既能实现数据库前端的创建,又能实现中间层的设计,ADO的应用范围涵盖了从一层到多层数据库的解决方案以及基于Web的数据驱动解决方案。
Delphi提供了对ADO的全力支持,提供了很多ADO组件,增加了一些新的字段类型如:Wide-String,GUID,Variant,interface,IDispatch 等。ADO是面向各种数据的层次很高的接口,它提供了强大的数据访问功能,可以访问的数据对象有:关系数据库中的各种数据;非关系型数据库,如层次型数据库,网状数据库等;电子邮件与文件系统;文本与图象、声音;客户事务对象。
3.3 DBExpress方法
DBExpress是在Kylix中引进的一种操作数据速度快,而且与平台无关,易发布的 SQL数据库存储技术。DBExpress为每一种其支持的数据库撰写具有统一接口的 DBExpress驱动程序,当发布DBExpress程序时,必须同时发布此驱动程序(一个DLL文件)。
DBExpress使用了单向数据集,能够向数据库服务器发送SQL指令,如果返回数据,也能够获得访问这些数据的游标。但是,它只能处理单向、只读的游标,不在内存中进行数据缓存,这样可以提高数据存取速度并使用最少的资源。TSQLDataSet,TSQLQuery,TSQLTable,TSQLStoredProc 是 四 种DBExpress数据存取控件,一般推荐用通用的TSQLDataSet,它即可以向数据库服务器发送命令,也可以处理任何数据。
3.4 BDE、ADO、DBExpress存取访问速度比较
BDE、ADO、DBExpress在连接 InterBase时,通过测试得知开启数据库的时间分别是1.831 s、1.625 s、1.465 s,可以看出DBExpress略胜一筹。
通过测试程序,让 BDE、ADO、DBExpress随机产生资料,并且移动到资料库之中。执行测试的结果如表2所示,从这些数据中可以看出BDE、ADO、DBExpress存取访问速度比较情况。
由表2可知,DBExpress几乎以快3倍的速度在处理资料,把BDE及ADO远远的拋在后面。DBExpress除了在移动资料的速度方面超过 BDE及ADO,在查询资料方面也大幅领先。
使用BDE、ADO、DBExpress查询大量随机资料的时间分别是 4.287 s、3.014 s、1.203 s,DBExpress在这一方面也以3倍的时间胜出BDE及ADO。各种数据显示,DBExpress处理各种资料效率几乎都遥遥领先已经发展数年之久的BDE及ADO。
表2 BDE、ADO、DBExpress存取访问速度比较情况表Tab.2 The comparison table of access and visiting speed among BDE,ADO,DBExpress
4 Delphi数据库开发的步骤
4.1 Delphi数据库设计方案
Delphi数据库设计方案中首先也是最重要的是系统分析,即把程序应具备的主要功能根据自己或用户的需要详细列出;第二,列出一些通用功能和程序中相关的辅助功能;最后建立数据结构。
有了设计方案,根据数据库设计需要实现的功能,选择相应的数据库和数据表格,包括每个数据表格应该具备多少字段、长度,是否建立索引等。
4.2 数据库流程设计
根据设计方案,写出程序设计流程。为了指导以后程序的设计,最好写出每个功能模块的基本流程。虽然在设计过程中可能会多次改动程序,但这个基本流程会指导程序设计不会出现太大的偏差。
4.3 为数据库准备编程资源
根据设计方案需要完成的功能,列出需要的模块,分层次、分结构地分析可能需要的编程资源,储备好这些编程资源,以备后用。
4.4 程序整体界面设计
根据程序设计的需求,可以大概的设计登录界面以及主界面,可能需要用到菜单、状态条、工具栏,MID窗口界面和文字等。在此基础之上,进行进一步设计,完善界面。
4.5 详细系统分析及方案解决
对整个程序根据所需功能和程序流程进行框架分析,依据分析的结果对一些问题提出解决方案。例如比较复杂的查询,用一条SQL语句可能查询不到所需的结果。遇到这种情况,可以分析利用别的方法来实现,如利用临时数据表格来实现。
5 结束语
通过对基于Delphi平台的数据库程序设计的原理、各组件功能应用以及数据库的连接方法的介绍,通过测试程序对比 BDE、ADO、DBExpress连接数据库方法的存取访问时间,得出DBExpress方法是遥遥领先于BDE、ADO的,大大提高了Delphi程序设计中数据库存取和访问的效率,最后总结了Delphi数据库开发的步骤及设计和解决方案,便于使用基于Delphi平台的数据库程序设计使用者学习和应用。
[1]JOHN AYRESS.The Tomes of Delphi(tm)Win32 Core API Windows 2000 Edition[M].USA:Wordware Publishing Inc,2010.
[2]李新宇,郑丽群,吴志强.ORACLE分布式数据库及应用[J].计算机应用,2007(22):71-91.
[3]谭燕,赵磊,李之明.Delphi高级辅助工具精解[M].北京:中国铁道出版社,2008.
[4]叶核亚.Delphi程序设计[M].北京:人民邮电出版社,2008.
[5]周爱民.Delphi源代码分析[M].北京:电子工业出版社,2004.
[6]刘瑞新.Delphi程序设计教程[M].北京:机械工业出版社,2006.