《数据库应用技术――Delphi应用系统开发》-第五章

上传人:我*** 文档编号:136585559 上传时间:2020-06-29 格式:PPT 页数:64 大小:486.50KB
返回 下载 相关 举报
《数据库应用技术――Delphi应用系统开发》-第五章_第1页
第1页 / 共64页
《数据库应用技术――Delphi应用系统开发》-第五章_第2页
第2页 / 共64页
《数据库应用技术――Delphi应用系统开发》-第五章_第3页
第3页 / 共64页
《数据库应用技术――Delphi应用系统开发》-第五章_第4页
第4页 / 共64页
《数据库应用技术――Delphi应用系统开发》-第五章_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《《数据库应用技术――Delphi应用系统开发》-第五章》由会员分享,可在线阅读,更多相关《《数据库应用技术――Delphi应用系统开发》-第五章(64页珍藏版)》请在金锄头文库上搜索。

1、第5章 连接数据库,本章学习要点 l 理解Delphi的数据集控件的基本概念和术语 l 了解Delphi数据集的基本属性和方法 l 学习Delphi数据集的浏览 l 掌握Delphi基于ADO的数据库连接方法,2020/6/29,2,5.1数据集控件,在Delphi中访问数据的基本单元是数据集对象,数据集是以行和列的形式组织起来的数据的集合;其中,每一列具有相同的数据类型,而每行是由各列指定类型的数据组成的。 为了更好地理解数据集的概念,现将几个与数据集相关的概念和术语说明如下: 数据集 一个分离的数据记录的集合。其中,每个记录包含多个字段。各个字段可以是不同数据类型(如整数、字符串、十进制数

2、和图像等)的数据。数据集由VCL的TDataSet表示。 表 一种特殊类型的数据集。表一般是一个实际存储在磁盘上、包含有数据记录的文件。VCL的TTable类中封装了它的各种功能。 查询 也是一种特殊类型的数据集。它可以被看作是执行了特殊命令后所产生的“内存表”,这些命令一般是对物理表或表集的操作。在VCL中由TQuery类来处理查询。,2020/6/29,3,数据库:指磁盘中的一个目录(在处理如Paradox、dBASES文件这样的非服务器数据的情况下),或是一个SQL数据库(当使用SQL服务器时)。在一个数据库中可以包含多个表。在VCL有一个TDataBase类。 索引 用于数据库表排序的

3、规则。所谓基于特定字段建立索引是指利用该字段的值作为表的排序依据。在TTable中包含了一些对索引进行操作的方法和属性。 如果应用程序没有使用了TDatabase控件,则系统根据数据集控件DatabaseName属性创建一个临时的数据库。它们按照用途可分为三类: 图5-1 数据集控件之间的继承关系,2020/6/29,4,第一类是用于BDE体系结构的数据集控件,包括TNestedTable、TTable、TQuery、TStoredProc,以及用于数据库决策的TDecisionquery控件; 第二类是ADO体系结构的数据集控件,包括TADODataSet、TADOTable、TADOQue

4、ry和TADOStoredProc; 第三类是平面文件体系结构的客户端数据集控件,包括TClientDataSet。 数据集控件之间的继承关系如图5-1所示。 5.1.1 数据集的属性 数据集的属性很多,最常用的有状态(State)属性、书签(Bookmark)属性和过滤方面的属性(例如FilterOptions、Filtered和Filter等)。下面将介绍它们的含义和用法。,2020/6/29,5,1状态属性 有时候,需要知道一个数据库表当前为编辑模式还是添加模式,或是否处于活动状态,这些信息都可以通过查看TDataSet的State属性来获取。State属性的类型为TDataSetSta

5、te,该类型的取值可以是表5-1中所列的任意一种。 表5-1 数据集的的属性取值及含义,2020/6/29,6,2020/6/29,7,数据集的State属性是只读属性,在程序中可以读取State属性值,但不能设置State属性。 当一个应用程序打开一个数据集的时候,数据集的State属性默认地被设为dsBrowse,及数据集处于浏览状态。要使数据集进入其它的状态,就要调用相应的方法。 2书签属性 书签就是在数据集的某个位置做的一个标记,它的作用是以后可以快速方便地回到书签的所在位置。数据集提供了许多的属性和方法用于管理书签。 数据集的Bookmark属性值代表的是当前记录的书签,可以通过设置

6、Bookmark属性值来指定当前书签。 FreeBookmark:删除一个书签。当书签不用的时候,调用FreeBookmark方法删除分配给某个书签的资源。,2020/6/29,8,3过滤属性 一个数据库应用程序往往只对数据集的部分记录感兴趣,例如,可能只需要对一个学生成绩表中成绩高于90分的学生感兴趣。这种情况下,可以用过滤技术把符合特定条件的记录过滤出来。不过,对于一个字段很多的数据集或者过滤条件较为复杂来说,最好还是使用查询控件来进行过滤。 要对数据集进行过滤,一般需要以下3个步骤: 首先要指定过滤条件: 然后设置FilterOptions属性的有关选项。根据具体需要而定,也可以没有;

7、最后把Filtered属性设为True。 以后如果不要进行过滤,只要把Filtered属性设为False即可。 (1)设置过滤条件与OnFilterRecord事件 指定过滤条件有两种方式: 一是设置Filter属性; 二是在处理OnFilterRecord事件的句柄中给出过滤条件。,2020/6/29,9,Dataset1.Filter:=State=MA; 也可以让用户来动态地指定过滤条件,如: Dataset1.Filter:=Edit1.Text; 甚至还可以把上述两行代码结合起来: Dataset1.Filter:=State=+Edit1.Text; 设置了过滤条件后,只要把Fil

8、tered属性设为True,过滤即有效。 (2)设置过滤选项 FilterOptions属性用于设置过滤的选项。这个属性是一个集合,可以是空集(默认),也可以取如表5-2所示的值。 表5-2 FilterOptions的取值及含义,2020/6/29,10,5.1.2 数据集的操作 对数据集的操作有很多,下面介绍一些常用的操作,如打开与关闭数据集、浏览记录、查询记录、搜索特定记录、修改记录、插入新记录、删除记录等。 1开关数据集 在对数据集进行任何操作之前,必须首先将数据集打开。要打开数据集,可以把Active属性设为True即可,例如: MyTable.Active:=True; 注意:在结

9、束对数据集的操作以后,或者是要改变数据集的一些其它的属性,比如修改TTable的TableName前,需要关闭数据集。 关闭数据集有两种方法: 将数据集的Active属性设为False,例如: MyTable.Active:=False; 调用数据集的Close方法,例如: MyTable.Close; 2浏览记录 数据集提供的浏览数据的方法或属性如表5-3所示。 表5-3 数据集浏览记录的方法和属性,2020/6/29,11,2020/6/29,12,(5)MoveBy方法 调用数据集的MoveBy方法使数据集中的另一条相隔指定距离的记录成为当前记录。MoveBy方法需要传递一个参数,指定相

10、隔的行数,正数表示向记录编号增大的方向移动,负数表示向记录编号减小的方向移动。程序代码如下: MyTable.MoveBy(8); (6)Eof属性 Eof是数据集的只读属性。用于判断当前记录是否到了数据集的末尾。如果Eof属性值为True,表示现在已到了数据集的最后一条记录。在遍历数据集的记录时一般需要用到Eof属性。 进行下列任何一个操作,都将会把Eof属性设为True。 打开一个空的数据集; 调用了Last; 调用了Next,而现在已经在数据集的最后一条记录; 调用了SetRange,而范围是无效的。 在其它情况下,Eof属性都将返回False。 在调用数据集的Next方法的循环中,通常

11、要读取EOf属性,以此来判断当前记录是否已处于数据集的最后一条记录,以避免对不存在的记录进行操作。程序代码如下,2020/6/29,13,MyTable.DisableControls; Try MyTable.First; While not MyTable.EOF DO Begin MyTable.Next; End; MyTable.EnableControls; End; 出现异常,也能保证刷新能得到恢复。 (7)Bof属性 Bof也是数据集的只读属性,它的作用和Eof恰好相反。Bof属性用于判断当前记录是否是数据集的第一条记录。如果Bof属性返回True,表示现在已到了数据集的第一条

12、记录。在遍历数据集的记录时一般也需要用到Bof属性。 进行下列任何一个操作,都将会把Bof属性设为True。 打开一个非空的数据集。,2020/6/29,14,调用了First; 调用了Prior,而现在已经在数据集的第一条记录; 在其它情况下,Bof属性都将返回False。 程序代码如下: MyTabte.DisableControls; Try While not MyTable.BOF DO Begin MyTable.Prior; End; Finally Mymable.EnableControls; End; 3编辑数据 要编辑数据集的记录,首先要调用Edit方法进入编辑状态,此时

13、数据集的State属性值将为dsEdit。,2020/6/29,15,注意:如果使用缓存更新技术的话,也就是数据集的CachedUpdates属性值为True时,调用数据集的Post方法只是将修改的数据写到缓存中,并不是直接写到数据集中。这时,需要调用ApplyUpdates方法才能将数据写到数据集中。 如果要取消当前所做的修改,可以按键盘上的Esc键或单击TDBNavigator控件上的Cancel按钮。 4插入记录 要在数据集中插入新的记录,首先要调用Insert或Append方法进入插入状态,此时数据集的State属性值为dslnsert。同样,调用Insert或Append方法并不一定

14、会使数据集进入插入状态,还要取决于CanModify属性的值。 一旦进入了插入状态,用户就可以在数据控件中插入一条新的记录,并输入相应的数据。,2020/6/29,16,5删除记录 调用数据集的Delete方法将删除当前记录,并且使数据集回到浏览状态,也就是说,数据集的State属性值将为dsBrowse。当前记录被删除后,下一条记录就成为当前记录。如果删除的本来就是最后一条记录,则前一条记录就成为当前记录。 6修改记录 除了TDBGrid和TDBNavigator等控件外,大部分数据控件只能工作于数据集的一个或几个字段,而不是整条记录。不过,数据集提供了若干个方法可以直接修改整条记录,这些方

15、法包括: AppendRecord方法:类似于Append,但可以给字段赋值,不需要调用Post。 InsertRecord方法:类似于Insert,但可以给字段赋值,不需要调用Post。 SetFields方法:且当前记录的字段赋值,需要显式地调用Post。 假设一个数据集中有五个字段,分别是Name、Size、Weight、Area和Bmp,可以样对它们赋值:,2020/6/29,17,AnimalsTable.InsertRecord(flatfish,5); 上述程序在数据集中插入了一条新的记录,并且对前两个字段赋了值。如果还要对 Weight和Area字段赋值的话,可以用如下的程序代

16、码。 With AnimalsTable Do Begin If Locate(Name,flatfish,IoCaselnsensitive) then Begin Edit; SetFields(NIL,NIL,5,5); Post; End; End; 7查询特定的记录 (1)Locate方法 Locate用于在数据集中定位一条特定的记录,并使该记录成为当前记录。Locate方法的语法如下:,2020/6/29,18,function Locate(const KeyFields:string;const KeyValues:Variant;Options:TLocateOptions):Boolean;virtual; 从上面Locate方法的语法可以看出,它需要传递三个参数,第一个是KeyFields参数,用于指定要按哪些字段搜索,第二个是KeyValues参数,用于指定每个要搜索的字段对应的值,第三个是Options参数,用于设置搜索选项

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号