登陆注册
16017000000027

第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方法

同类推荐
  • 音视频合成制作

    音视频合成制作

    本书共分4篇6章,其中第1篇简介音视频合成的编导基础,第2篇主要介绍SonyCinescore1电影音乐自动合成,第3篇主要介绍Vegas7.0音视频剪辑合成,第4篇主要介绍AdobeAudition2.0、CakewalkSONAR6和SteinbergNuendo3的音视频合成。本书可以作为音乐、美术、动画、舞蹈、影视、戏剧等艺术院校视听艺术合成制作课程的教材,也可以作为相关人员的自学用书。
  • 云计算和现代远程教育

    云计算和现代远程教育

    本书介绍了云计算知识、云计算的特性、云计算技术、云计算中的访问云、云计算中的云存储、云计算在远程教育中的应用等内容。
  • 我看电商

    我看电商

    本书是作者近30年从事零售及电子商务管理的总结和分享。近年来电商行业在中国迅猛发展,2012年网络零售市场规模达到13,000亿人民币,诞生了淘宝、天猫、京东、当当、凡客、唯品会……等一大批全新的网络公司,电子商务正在日益深入的影响着越来越多人的生活。如今这位自称跨界老兵的电商操盘手第一次全方位剖析电商风云,细说中美电子商务发展的不同路径,评点国内各大电商企业的是是非非,详解其中的融资、模式、运营、效率……个中经验,毫无保留的娓娓道来,笔触至深,让人不禁掩卷沉思。
  • 下一代互联网

    下一代互联网

    本书系统介绍了下一代互联网的进展情况,包括下一代互联网的概念解析,国内外下一代互联网的最新发展情况,下一代互联网的关键技术进展,以及各国发展下一代互联网的政策计划。最后分析了下一代互联网对未来社会的影响,提出我国发展下一代互联网的政策建议等。全书共6章,包括互联网发展历史和现状,下一代互联网基本概念,下一代互联网研究最新进展,下一代互联网发展现状,我国发展下一代互联网现状,发展下一代互联网战略建议。
  • 《Internet实用技术》作业集

    《Internet实用技术》作业集

    随着计算机应用的普及和社会信息化水平的提高,Internet已走进我们的生活。《Internet实用技术》这门课将带领我们走进网络的神秘殿堂,让我们认识网络,了解网络,进而学会使用网络,维护网络。其范围涵盖了在授课过程中所讲授的内容,题型多样,内容丰富,并附有两套模拟题,最后附有答案。学生可按照课程进度做习题来巩固和掌握知识。本作业集由李琳编写,由西北工业大学网络教育学院负责组稿和审定。因为时间仓促,水平有限,错误和不当之处在所难免,敬请读者批评指正。
热门推荐
  • 语言理论与实践

    语言理论与实践

    这个集子收录的是个人零散的思维碎片,如果其中存在一种教学思想的话,这种思想可以说属于“工具论”。这种“工具论”是叶圣陶先生语文教学思想的继承与发展,与现在绝大多数国家认识高度统一后推行的语文教学思想与方式(形式训练)高度一致。
  • 元桂镇

    元桂镇

    发生在元桂镇的一场无关风花雪月的故事,侠客、富贾、书生……
  • 腹黑王爷,别想跑

    腹黑王爷,别想跑

    安漾,21世纪的全能少女,重生在一个废物身上,废物?逆天变成全能天才!皇甫彻夜,一个神秘大陆的王爷。绝世无双,为何专情她一人…………“十万两黄金?”某男低头看着皱着眉头的安漾。“这个……等以后吧!以后在还你……”不就是欠你十万两黄金嘛!“以后?我记得上次你也是这样说的……不然,你就做我的贴身丫鬟?”某男无耻地说道。“你做梦!”安漾看着眼前伸出来的手,摆明就是变相讨债!!!可是哪里有钱还啊!“没有钱?从今以后,你便是我的了。”某男看出我的心思,无耻的说……
  • 让宝宝爱上吃饭:超级妈妈的5分钟创意美食

    让宝宝爱上吃饭:超级妈妈的5分钟创意美食

    对于好奇心想象力丰富的孩子来说,吃饭,不是每日的任务,而是一件愉快的,能够启发孩子智慧、激发孩子想象力的事。现代妈妈工作忙碌,没有太多时间为宝宝精心准备食物。因此我们提倡花最短的时间,做最创意的美味,只要每天多花5分钟,就能立刻将平淡的食物变成美味的艺术品,让宝宝主动爱上吃饭。
  • 这个杀手有点爱

    这个杀手有点爱

    看一代杀手之皇,如何在异世觉醒上古龙血,让天在也挡不住他的眼,让地都要为之震颤。
  • 噬天仙狼

    噬天仙狼

    千般法宝,万般神通,我只需一口吞下,一切便皆为我所用!吞仙路,乘青鸾,天狗食日,仙狼噬天!
  • 鹰遥晴天

    鹰遥晴天

    “请你一定要娶我!不然你会很不幸、很悲惨,这辈子都得不到幸福!”啥?要他非娶她不可?啧啧,现在是在演哪一出啊?乍闻眼前这女孩无厘头的“命令”,鹰荻威真是觉得既好气、又好笑,他知道自己的外型极易吸引女人,所以艳遇多得不得了,但在初见面就揪住他的衣领,并以恐吓的语气向他逼婚,老实说,这种场面,他长这么大还是第一次碰见呢!而且没想到她逼婚不成,接着居然还对他大喊“非礼”!没搞错吧?这位晴子小姐以为他胃口这么好吗?虽然她长得挺甜美可爱的,但却笨手笨脚、个性迷糊,再说他向来偏好“性感”冶艳、个性爽朗的美人儿,她那副发育不全的小学生身材,压根儿构不着边好不好?还非礼咧?亏她好意思说,该害怕的人是他吧!
  • 蓑雨人生——苏轼

    蓑雨人生——苏轼

    本书讲述了大文豪苏东坡的坎坷人生路。内容包括:立志求学、初入仕途、贬谪之旅、政绩显赫、再度贬谪、精神道德与文化成果等。
  • 邪魅总裁:宝贝别逃了

    邪魅总裁:宝贝别逃了

    雨无情的下着,“我求求你!求求你”带着哭音的女声响起,接着便是一沉闷重物跪地的声音,徐凝寒看着站在她面前仿佛来自地狱男人。她跪下了,男人眼中闪过一丝讶异,意料之外。男人招了招手,旁边撑着雨伞的管家缓缓退下。他弯下腰,抬起她的下额,脸向她渐渐逼近,徐凝寒只感觉男人身上的淡淡的烟草味扑来,男人离她一指的距离,看着那双恐惧却倔强的眼睛,突然笑了,“这就是你求人的态度吗”徐凝寒却自嘲的笑了笑,只有他才能帮自己不是吗?…………一场强取豪夺的游戏,她被迫参与,无处可逃。暗黑宠文
  • 世界上唯一的爱丽丝

    世界上唯一的爱丽丝

    你永远不会知道,见过你以后,世界上再也没有爱丽丝。百合情节,不喜慎入。绝对清水。