登陆注册
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方法

同类推荐
  • 办公设备使用与维护

    办公设备使用与维护

    信息技术的发展正前所未有地改变着人类生活的每一个层面,以信息化、全球化和高科技为特征的新经济浪潮滚滚而来,机遇与挑战并存。办公自动化是信息化时代最重要的标志之一,办公要实现自动化,当然离不开办公设备。
  • 科学伴你行-神奇的通信技术

    科学伴你行-神奇的通信技术

    在日常生活中,有时人们要借助于小旗子来进行通信联络,比如,开运动会时,发令员常常要用小旗子与计时员联系;当你乘坐火车进入车站时,都会看到车站工作人员拿着红色和绿色的小旗子在站台上进行指挥;在战争中,打出白色旗子表示投降,插上红色旗子表明胜利;航行在茫茫大海上的船只,双方船员会凭不同旗帜组成的标志,来了解对方的意思。以上种种用小旗子来“说话”的通信方式就叫做旗语。
  • 智能计算方法概论

    智能计算方法概论

    本书以智能计算领域的若干前沿技术为主线,内容包括数字水印技术在版权保护区和身份认证中的应用,量子算法在信号处理、图像处理中的应用,量子数据挖掘技术,小波方法在医学图像处理中的应用等。
  • 创业在微软

    创业在微软

    身处软件巨擘微软之中,何来“创业”二字?本书详尽勾勒了微软亚洲工程院(ATC)的成长历程,披露了工程院人在“创业”过程中不为人知的种种酸甜苦辣,生动展现了工程院的独特文化,并从另一个角度展现了其领袖人物张宏江博士的心路历程和管理思想。
  • 中文版AutoCAD2005建筑绘图精讲精学

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

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

    祸岛

    请拿好你的您的船票,坐好扶稳(ヾ^_^?)岛屿上的大逃杀,马上开始!!!
  • 这个游戏怎么破

    这个游戏怎么破

    夏娇娇最近对一款爱情攻略游戏上瘾,可作为低端玩家没有一次攻略成功。就在她心灰意冷准备卸载的时候她居然穿越到游戏里,系统告诉她只准成功不许失败。
  • 竹马旧事重提

    竹马旧事重提

    唱过的歌,流过的泪,写过的练习册,同青春一起不会分开的,除了小乔和周瑜,青梅和竹马。
  • 莲花宝鉴

    莲花宝鉴

    若未成功,帮你自宫——《莲花宝鉴》,这是一个关于童子功的故事,一个可怜的男人,被人强迫学了一套阴毒的功法,神功大成之前不得近女色,不然《莲花宝鉴》便会‘咔嚓’一声帮他自宫!!
  • 天行

    天行

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

    变异进化者

    三年活埋,重出天日时,这个世界已经不是原来熟悉的世界。人类在进化,科技在锐变。外族人在观望,人类在自相残杀。唯有变强,不停的进化,才能主宰自己的命运!
  • 可爱的奸雄:曹操

    可爱的奸雄:曹操

    曹操是一个历来褒贬不一、颇有争议的人物。面对群雄鼎立,他背负了卑鄙、奸诈、狠毒的骂名;面对天下苍生,他敞开了柔情、厚道、圣贤的情怀。那么,历史上真实的曹操究竟是英雄、奸雄,还是奸贼?《可爱的奸雄:曹操》以详实权威的资料为基础,用另类诙谐、轻松调侃的笔法,向读者讲述了曹操从顽童时期至王爵之尊的人生轨迹,展现了他多姿多彩、颇为真实的一面。
  • 某君心:嗜血帝皇野蛮妃

    某君心:嗜血帝皇野蛮妃

    第一部【某君心:嗜血帝皇野蛮妃】她野蛮疯狂聪明却有着一颗向往自由的心!他残暴嗜血无情却因为一次次误会伤害她!她一抹孤魂落入林若儿尸体中变成林家大小姐,之前正主偶然一次宴会上以一只思月而落入后宫成为明月贵妃!她为了他心爱的皇后牺牲自己的性命搭救!他潇国皇帝冷酷无情却因为她的天真活泼而爱上她,当得知她就是那个能拯救皇后的人时,却义无反顾的牺牲她和未曾出身的孩子!第二部【某君心:龙宝宝夺爹地】一年后,魂国夜朵公主带上四个小皇子出使潇国,天真,活泼,搞蛋的四个龙宝宝大战皇后,上演一出龙宝宝夺爹地大戏,冥冥之中再次的相遇相爱的两个人会在一起吗?
  • 王妃约么

    王妃约么

    夫君和亲妹乱伦,将她女儿制成人彘,伪善姨娘和恶毒庶妹将她剥皮抽筋。一朝重生,化身修罗,渣男渣女,挑断手筋,一杯水银下肚!姨娘庶妹,剥皮抽筋,制成人彘!外界传言,苏家有女心如蛇蝎,杀人如麻,称之妖女;神秘王爷,冷酷无情,却独宠她一人。“王爷,有空吗?”某女犯了花痴“王爷,晚上深入可好?”某女继续欺压“王爷,今天晚上,约嘛?”某女邪魅一笑,欺上身来。
  • 天行

    天行

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