登陆注册
36209800000027

第27章 数据库应用程序设计(1)

本章要点

Delphi的数据库开发功能

数据库组件

数据库应用程序开发步骤

数据库应用程序设计举例

QReport组件和报表的制作

具有强大的数据库应用程序开发功能,是Delphi的一大特色,也是Delphi受到普遍欢迎的重要原因之一。

本章介绍Delphi的数据库功能和进行数据库应用程序设计的方法。

12.1Delphi数据库功能概述

12.1.1数据库系统

信息技术的发展使得数据库的应用越来越普及,数据库应用系统的开发成为软件开发的重要领域。

数据库系统主要由三大部分组成:

数据库;

数据库管理系统(DBMS);

数据库应用程序。

这3部分的关系如图12-1所示。

数据库是按某种形式组织在一起的相关数据的集合,由很多数据文件和辅助文件组成。

按数据库的模型分,数据库有3种类型:关系数据库、网状数据库和层次数据库。现在用得最多的是关系数据库。

在关系数据库中,一个数据库是由若干个表、索引及视图等其他数据库元素组成的。

一个表就是一组相关数据的按行排列,就像是一张二维表格一样,每一行是一个数据记录。

同一个表中的记录都有相同的结构,都由若干个相同的字段组成,表的每一列是一个字段,每个字段有各自的属性。

数据库管理系统负责数据库信息的管理和维护。现在应用的数据库管理系统有若干种,个人桌面数据库管理系统有dBASE、FoxPro及VisualFoxPro、Access、Paradox等,大型数据库管理系统有Sybase、Oracle、Informix、SQLServer等。

数据库应用程序是用某种开发工具开发的获取、处理、显示、更新数据库数据信息的应用程序。现在比较流行的数据库应用程序开发工具有VisualBasic、VisualC++、PowerBuilder、Delphi等。

数据库应用程序可以通过数据库管理系统,对数据表中的数据记录进行选择、插入、删除、修改等操作。对关系数据库来说,操作是用专门的数据库语言SQL(StructuredQueryLanguge,结构化查询语言)完成的。

12.1.2Delphi的数据库功能

Delphi编程环境具有强大的数据库应用程序开发功能。在效率方面,它比VisualBasic高得多;在编程方面,它比VisualC++简单、快速。因此,Delphi成为越来越多的人进行数据库应用程序开发工具的首选。

Delphi强大的数据库功能主要体现在以下几个方面。

1.Delphi通过BDE支持几乎所有的数据库类型Delphi数据库应用程序不能直接访问数据库,而是通过Delphi带有的BDE(BorlandDatabaseEngin,Borland数据库引擎)对数据库资源进行访问的。

BDE可以对一些本地数据库进行直接的访问,如dBASE、FoxPro、Paradox、Access、InterBase等;也可以与SQLLinks连接,访问一些远程数据库,如Oracle、Sybase、Informix、SQLServer、DB2、Interbase等;还可以通过ODBC(OpenDatabaseConnectivity,开放式数据库连接)访问具有ODBC接口的数据库系统。因此,Delphi应用程序通过BDE,就可以访问几乎所有的数据库类型。

于是Delphi数据库应用程序的体系结构,可以表示为图12-2。

2.Delphi编程环境集成了多种数据库开发工具

为了便于用户开发Delphi数据库应用程序,Delphi编程环境集成了多种数据库开发工具,可用于各个阶段应用程序的开发。这些开发工具除了BDE之外,还有DatabaseDesktop、DatabaseExplorer或SQLExplorer、SQLMonitor、DatabaseFormWizard等。这些工具中,DatabaseFormWizard只能从Delphi集成开发环境菜单栏的【Database】→【FormWizard】

菜单项启动,其他工具既可以从Delphi集成开发环境菜单栏的【Database】或【Tools】中的相应菜单项启动,也可以直接从系统菜单【开始】→【程序】→【BorlandDelphi6】中的相应菜单项启动。

1)DatabaseDesktop(数据库桌面)

【DatabaseDesktop】是一个很有用的数据库管理工具,可以用来建立数据表,输入、修改、删除、查询数据表中的数据。

执行【Tools】→【DatabaseDesktop】菜单命令,就可以启动【DatabaseDesktop】。

关于【DatabaseDesktop】的使用,后面还要做详细介绍,这里就不赘述了。

2)DatabaseExplorer(数据库浏览器)

在Delphi企业版或专业版中,【DatabaseExplorer】被称为【SQLExplorer】。

这是一个功能较强的数据库实用工具,可以对数据库进行访问,也可以对数据库的别名进行维护。

执行【Database】→【Explorer】菜单命令,就可以启动【SQLExplorer】,如图12-3所示。

3)SQLMonitor(SQL监视器)

【SQLMonitor】是一个SQL指令监视器,可以记录SQL指令执行时的信息。

执行【Database】→【SQLMonitor】菜单命令,就可启动【SQLMonitor】,如图12-4所示。

4)DatabaseFormWizard(数据库窗体向导)

【DatabaseFormWizard】是高效、简便进行数据库应用程序设计的工具,利用它可以生成满足一般要求的数据库应用程序框架。

执行【Database】→【FormWizard】菜单命令,就可以启动【DatabaseFormWizard】,如图12-5所示。

3.Delphi提供了大量的数据库组件

为了方便地实现数据库访问的各种功能,Delphi提供了大量的数据库组件,而且随着Delphi版本的升级,数据库组件的数量越来越多。到Delphi6,在组件模板中共有9个选项卡、90多个组件是用于数据库的。按传统叫法,其中用得最多的组件有两大类:数据访问组件和数据控制组件。

顾名思义,数据访问组件是用于访问数据库的,它们通过BDE和数据库链接,实现对数据库的访问。数据访问组件是不可视组件。

常用的数据访问组件有Table(表)组件、Query(查询)组件、StoredProc(存储过程)组件和DataSource(数据源)组件。

通常,其中的Table(表)组件、Query(查询)组件和StoredProc(存储过程)组件又被称为DataSet(数据集)组件,它们位于组件模板的【BDE】选项卡中。每个数据集组件都通过BDE和一个数据表相连接,把从BDE取得的数据提供给DataSource组件。

DataSource(数据源)组件位于组件模板的【DataAccess】选项卡中,负责连接数据集组件和数据控制组件,每个数据源组件要有一个数据集组件与之相连,把从数据集组件传送来的数据传送给相应的数据控制组件。

这一点Delphi5和Delphi6不同。在Delphi5中,数据访问组件位于组件模板的【DataAccess】(数据访问)选项卡中(Delphi5中,没有BDE选项卡)。从组件在Delphi6组件模板中的位置分类,似乎应该分别称为BDE组件和数据访问组件更合适。为同以前版本的叙述一致,本书仍一并称为数据访问组件。

数据控制组件位于【DataControl】选项卡中,是可视组件。数据控制组件用于设计数据库应用程序界面,把从数据访问组件取得的数据,以各种可视的方式提供给用户浏览、修改、删除等。

综上所述,数据访问组件和数据控制组件在数据库应用程序中的位置如图12-6所示。

图12-6数据访问组件和数据控制组件在数据库应用程序中的位置掌握数据库组件的功能及它们的使用方法,是设计数据库应用程序的基础,后面有关章节将专门介绍这些内容。

12.2常用数据库组件

本节将介绍最常用的数据访问组件和数据控制组件,另外一些组件放到后面有关章节再进行介绍。

12.2.1DataSet(数据集)组件

1.Table组件

Table组件在组件模板的【BDE】选项卡中(Delphi5中是在【DataAccess】选项卡),它通过BDE直接与数据表连接,实现对数据表的访问,是数据库应用程序中最常用的组件之一。

1)Table组件的属性

(1)DatabaseName属性

DatabaseName属性用于指定Table组件要访问的数据库,可以是数据库的名字,也可以是BDE定义的数据库的别名。该属性的属性值可以在对象检查器的属性值栏的编辑框中直接输入,也可以在其下拉列表中选择。

(2)TableName属性

TableName属性用于指定由DatabaseName属性确定的数据库中Table组件要访问的数据表的名称。该属性的属性值可以在对象检查器的属性值栏编辑框中直接输入,也可以在其下拉列表中选择。

(3)Active属性

Active属性决定Table组件的状态。该属性为布尔型属性,若属性值为True,则Table组件被激活,可以访问数据表;若其值为False,则不能访问数据表。在Table组件的DatabaseName属性和TableName属性设定之前,不能将该属性设置为True;反之,在将该属性设置为True之后,若修改DatabaseName属性或TableName属性,该属性自动变为False。

该属性可以在设计时设置,也可以在程序中设置,格式为:Table1.ActiveTrue或False。其默认值为False。

(4)IndexName属性

IndexName属性指定数据表的索引字段名。只有在设置了TableName属性后才能设置该属性。

(5)ReadOnly属性

ReadOnly属性决定是否可以对数据表中的数据进行修改。该属性为布尔型属性,若其值为False,则可以修改数据表中的数据;若其值为True,则不能修改数据表中的数据,而只能查看数据表中的数据。其默认值为False。

(6)Exclusive属性

Exclusive属性决定Table组件是否以独占方式打开数据表。该属性为布尔型属性,当其值为True时,则以独占方式打开数据表,即其他应用程序不能同时操作数据表;当其值为False时,则其他应用程序可以同时操作数据表。其默认值为False。

(7)RecordCount属性

RecordCount属性用于记录数据表中数据记录的个数。该属性为只读属性。

(8)FieldCount属性

FieldCount属性用于记录数据表的字段数。该属性为只读属性。

(9)BOF属性

一个数据表中有若干记录,对数据表的操作要用指针指明是针对表中哪个记录进行的。

数据表刚打开时,或者调用Table组件的First方法后,指针指向表的首记录,操作完一个记录,自动将指针指向下一个记录。

BOF属性指明当前指针是否指向数据表的首记录。该属性为只读布尔型属性,若当前指针指向数据表的首记录,则其值为True;否则,为False。

(10)EOF属性

EOF属性指明当前指针是否指向数据表的末记录。该属性为只读布尔型属性,若当前指针指向数据表的末记录,则其值为True;否则,为False。数据表的所有记录操作完,或者调用Table组件的Last方法后,指针指向末记录。

(11)MasterSource属性

当需要链接主数据表和明细数据表时,Table组件用该属性指定主数据表。

(12)MasterField属性

当需要链接主数据表和明细数据表时,Table组件用该属性指定链接数据表的字段。

2)Table组件的方法

(1)Open方法

Open方法打开Table组件中的数据表。相当于把Table组件的Active属性设置为True。

Table组件方法的调用格式同其他组件一样:Table1.Open;后面介绍的方法用同样的调用格式。

(2)Close方法

Close方法关闭Table组件中的数据表。相当于把Table组件的Active属性设置为False。

(3)Refresh方法

Refresh方法刷新Table组件中的数据表,重新从表中读取数据。

(4)First方法

First方法将指针移到数据表的首记录上。

(5)Last方法

Last方法将指针移到数据表的末记录上。

(6)Prior方法

Prior方法将指针向前移动一个记录。

(7)Next方法

Next方法将指针向后移动一个记录。

(8)MoveBy方法

MoveBy方法将指针移动到一个指定的位置,该方法的声明格式为:

functionMoveBy(Distance:Integer):Integer;参数Distance指定新的位置与当前指针的相对位置,返回指针实际的移动距离。

(9)AppendRecord方法

AppendRecord方法在数据表的最后添加一个新的记录,并将指针指向该记录。

该方法的声明格式为:

functionAppendRecord(constValues:arrayofconst);参数Values为记录的各个字段值。

(10)Append方法

Append方法在数据表的最后添加一个新的空记录,并将指针指向该记录。

(11)Insert方法

Insert方法在指针当前指向的记录前插入一个新的空记录,并将指针指向该记录。

(12)Delete方法

Delete方法删除当前指针指向的记录,并将指针指向下一个记录。

(13)Edit方法

同类推荐
  • 微软360度

    微软360度

    本书是由微软总部华人协会组织编写的第二本书,是《微软360度——企业和文件》一书的姐妹篇,本书将着重向你呈现微软总部的华人专家是如何一步一步地走向成功的及在微软总部成功的心路历程,以及如何应对挑战,揭示了微软成功的最重要秘密之一——人才至上,读者读后收获更多的是这些成功人士的成功经验,从而为自己的成功做出更好的规划。就让我们一起通过此书来看看微软公司人才至上管理的方方面面,聆听微软的心声,感觉微软的脉动吧。
  • 信息安全

    信息安全

    我们不得不看到,全球信息化发展,使信息安全成为维护国家安全的重要屏障,信息安全问题正在为国与国之间带来新的制约关系。当然,这只是我们强调信息安全极端重要性的一个原因。事实上,信息安全已经上升为国家安全的重要组成部分,这是信息时代国家安全的明显特征,也是很多国家的共识。但与其他国家安全元素不同,如果脱离信息化发展的环境,“信息安全”只是一个抽象的目标,它要通过对国家的政治、经济、文化等方面的影响体现其对国家安全的意义,并以保障信息化发展为目标取向。因此,我们说信息安全是信息时代国家安全的基石。
  • 中文版AutoCAD2005建筑绘图精讲精学

    中文版AutoCAD2005建筑绘图精讲精学

    本书从中文版AutoCAD2005建筑绘图的基础进行介绍,讲解了建筑绘图的环境设置、二维建筑图形的绘制、二维建筑及装饰图形的编辑、建筑绘图中的文字标注和图形查询、建筑装潢平面图中的尺寸标注、建筑绘图中图块的应用、建筑平面图的绘制、建筑立面图的绘制、建筑剖面图的绘制、建筑绘图中的三维造型、三维建筑模型绘制及建筑图纸的布局与打印输出等内容。
  • 都是网络惹的祸

    都是网络惹的祸

    本书分网络游戏、网络聊天、网络隐私、网络网吧安全、网络文化、网络语言、网络犯罪、网络陷阱等栏目,从不同的视角探讨了在当今社会的网络现象。
  • 网络广告经纪人

    网络广告经纪人

    本书为网络广告经纪人培训认证的指定教材,该认证是商务部中国商务广告协会和信息产业部中国电子商会联合推出的,旨在为国家造就和培养出一大批网络广告梯队型人才。该教材包括网络广告经纪人的介绍和发展趋势,以及网络广告的原理、策划、设计、制作、发布与交换、效果评估、管理,以及网络广告营销的国内外最新的成功案例,还提供了一些常用的网络广告制作工具。本教材适合助理网络广告经纪人和网络广告经纪人层次使用。也可作为高校广告、电子商务等专业的教材。
热门推荐
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 正人君子的修仙之路

    正人君子的修仙之路

    一出生就注定要龙行九天?刚出门就满神装? 欢迎观看一位正人君子的修仙历程。 这本书带你从不一样的角度看修仙!祝各位道友道运隆昌。
  • 铅华御

    铅华御

    “我也曾愿山长水阔,看尽大漠孤烟。青庐合卺,得一良人矣。可终究非我所有,只能困囿宫闱,了此余生。”那年雪满长安,她入宫为长姊侍疾,偶然与他初逢,只那一刹便定她余生芳华。至此一生,终此一世,从踏入宫门那一刻,再无清时,而是贵人佟氏。然而问情数载,抵不过瘗玉埋香者。年少绮梦,终究是埋藏在了佟府的青棠树下……
  • 静姝

    静姝

    重生胞姐之身顾静姝惊喜地发现自己可以和蚂蚁交流如此坐一屋而览全宅什么???!!!婆母居然和公公……小叔竟然爱慕自己!夫君的几个小妾都是摆设!!!Orz(咱还能不能好好的宅斗啦~)
  • 潜藏在青春里的不言殇

    潜藏在青春里的不言殇

    我们在青春的漫漫流河里,只是微茫的小小的一点,一不经意就这样与青春挥挥手告别了。
  • 英雄联盟之英雄技能我都有

    英雄联盟之英雄技能我都有

    2019年3月8日下午四时,一个男孩正在打着英雄联盟,嘴里喊着:“哈撒给,哈赛,面对疾风吧,怎么又死了。我zai呀!”没错真在使用疾风剑豪,顶着0/21/0的战绩,还有队友一连串的问号,在哪里快乐的E着,每次死了不是队友的问号,就是队友亲切而又友好的问候。就在这个疾风剑豪,在死亡了第30次的时候,这局游戏终于输了,再点击继续游戏的一瞬间一道从天而降光柱注入到了这个年轻人得身体里,“恭喜宿主获得英雄联盟之英雄技能我都有系统”……
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 情入心来美万生

    情入心来美万生

    每一个时刻都有每一种花的开放,但却没有一种四季常旺的花儿。苒世清楚地懂得这个道理。人就好比花,但花相比对人来说又好的多,因为花的盛放就好似高中数学正余弦函数的周期那般,周而复始下一个同样的时季,花儿仍在那个地方绽放。人却不会,人只有一个绽放期,是否美,是否艳,是否凋,是否零,都只在这一生中,苒世很珍惜这珍贵的时期,虽然苒世是一个普通人家的孩子,家境不富裕,还评得上贫困。她有一颗很好的心,一人安好的度过了18个春秋。某一次相遇让她的心房打开,温暖她。
  • 余生一个鹿晗

    余生一个鹿晗

    遇见大明星鹿晗是怎样一种心情?大明星是学长又会是怎样?从来没想过的事情竟然落在了一个还没步入社会的高中女生舒妍身上,与鹿晗的爱恨情仇,再加上“前男友”和闺蜜制造的阻碍,舒妍是否会和鹿晗在一起呢……
  • 生死簿

    生死簿

    妖魔世界,有人类降魔士居东土,有万妖和万鬼霸西荒,有暗夜游侠,在黑夜中闪烁着诡谲的双眸,更有许多不知名的种族,汇成一个妖魔乱舞的时代……一书一世界,欢迎来到妖魔世界!