版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章连接到数据库,本章的学习点l是Delphi的数据集控制的基本概念和术语l是Delphi数据集的基本属性和方法l是Delphi数据集的阅览l是掌握Delphi的ADO的数据库连接方法,2020/6/19 5.1数据集控件使用Delphi访问数据的基本单元是数据集对象,数据集是以行和列的形式组织的数据集合,其中每列具有相同的数据类型,每列由为每列指定的数据类型组成。 为了更好地理解数据集的概念,下文描述与数据集相关的一些概念和术语。 其中,每个记录都包含多个字段。 每个字段可以是不同数据类型的数据,如整数、字符串、十进制数和图像。 数据集用VCL的TDataSet表示。 表特殊种类的数据集。
2、 表通常实际存储在磁盘上,是包含数据记录的文件。 VCL的TTable类内置了其各种功能。 查询也是一种特殊类型的数据集。 这通常可以看作是对物理表或表集执行特殊命令(即操作)后生成的“内存表”。 在VCL中,TQuery类处理查询。 2020/6/19,3,数据库:磁盘中的目录(处理服务器以外的数据,如Paradox和dBASES文件)或SQL数据库(如果使用SQL服务器)。 一个数据库可以包含多个表。 VCL有一个t数据库类。 索引用于对数据库表进行排序的规则。 基于特定字段建立索引是指将该字段的值用作表的排序标准。 TTable包含处理索引的方法和属性。 如果应用程序不使用TDataba
3、se控件,则基于数据集控件DatabaseName属性创建临时数据库。 根据用途,图5-1的数据集控制之间的继承关系,2020/6/19, 4、4、第一类是用于BDE架构的数据集控件,包括TNestedTable、TTable、TQuery、TStoredProc、 包含用于数据库决策的TDecisionquery控件的第二个是ADO架构的数据集控件,包括TADODataSet、TADOTable、TADOQuery、TADOStoredProc等,第三个是数据集控件之间的继承关系如图5-1所示。 5.1.1数据集的属性具有很多属性,其中最常用的是与状态属性、书签属性和过滤器有关的属性(例如,
4、过滤器选项、过滤器、过滤器等)。 对这些的意思和使用方法进行说明。 2020/6/19,5,1 .对于状态属性,您可能需要知道数据库表是当前编辑模式还是附加模式,还是处于活动状态。 可以通过引用TDataSet的State属性来获取这些信息。 State属性的类型是TDataSetState,该类型的值可以是表5-1中的一个。 表5-1数据集的属性取值和意义,2020/6/19、6、2020/6/19、7,数据集的State属性是只读属性,可以通过程序读取State属性值,但不能设定State属性。 应用程序打开数据集时,默认情况下,数据集的State属性设置为dsBrowse,数据集被引用。
5、 要使数据集处于不同的状态,请调用适当的方法。 2 .书签属性书签是在数据集的某个位置创建的标记,其作用是,让您能够快速、轻松地返回到书签的某个位置。 数据集提供了许多用于管理书签的属性和方法. 数据集的Bookmark属性值表示当前记录的书签,您可以通过设置Bookmark属性值来指定当前书签。 FreeBookmark :删除书签。 如果没有使用书签,请调用FreeBookmark方法删除分配给书签的资源。 2020/6/19、8、3 .对属性进行过滤的数据库应用可能仅对数据集的部分记录感兴趣。 例如,可能只对一个学生成绩单的成绩超过90分的学生感兴趣。 在这种情况下,可以使用过滤技术来对
6、满足特定条件的记录进行过滤。但是,如果有很多字段的数据集和筛选条件很复杂,建议使用查询控件进行筛选。 要筛选数据集,需要三个步骤:首先指定筛选条件然后设置FilterOptions属性的选项。 根据具体需要,可以没有最后将Filtered属性设置为True。 今后不进行过滤时,可以将Filtered属性设置为False。 (1)有设定过滤条件的方法和在OnFilterRecord事件中指定过滤条件的方法。 一种方法是设置Filter属性。第二种方法是向处理OnFilterRecord事件的句柄提供过滤条件。 2020/6/19,9,dataset1. filter := state = ma
7、; dataset1. filter :=edit1. text; dataset1. filter := state =edit1. text; 设置筛选条件后,只需将Filtered属性设置为True即可启用筛选。 (2)设置过滤器选项FilterOptions属性用于设置过滤器的选项。 这个属性是集合,空集合(缺省)也可以取像表5-2那样的值。 表5-2FilterOptions的值和意义是2020/6/19、10、5.1.2数据集的操作多用于数据集的操作,可以打开、关闭、查看记录、查询记录、搜索特定记录1 .要开关数据集,在操作数据集之前,必须先打开数据集。 要打开数据集,请将Acti
8、ve属性设置为True。 例如,MyTable.Active:=True; 注意:在完成数据集的操作或更改数据集的其他属性(如更改TTable的TableName )之前,必须关闭数据集。 可以通过以下方法关闭数据集:将数据集的Active属性设置为False。 例如: MyTable.Active:=False; 调用数据集的Close方法。 示例:我的表. close; 2 .阅览记录数据集所提供的阅览数据的方法或属性如表5-3所示。 表5-3数据集阅览记录的方法和属性,2020/6/19、11、2020/6/19、12、(5)MoveBy方法调用数据集的MoveBy方法,使数据集中另一个
9、指定距离的记录成为当前记录。 MoveBy方法必须传递一个参数,以指定有间隔的行数。 正数表示向记录编号变大的方向移动,负数表示向记录编号变小的方向移动。 程序代码是MyTable.MoveBy(8) (6)Eof属性Eof是数据集的只读属性。 用于确定当前记录是否到达了数据集的末尾. 如果Eof属性值为True,则表示已达到数据集的最后一条记录。 遍历数据集的记录时,通常需要Eof属性。 执行以下操作之一时,Eof属性设置为True。 打开空数据集调用Last调用Next,调用当前位于数据集最后一条记录中的SetRange,范围无效。 否则,Eof属性返回False。 在调用数据集的Next
10、方法循环中,通常会确定当前记录是否位于数据集的最后一条记录中,并加载EOf属性以避免处理不存在的记录。 程序代码包括2020/6/19、13、my table.disable controls try my table.first; whilenotmytable.eof dobeginmy table.next; 结束; 我的表.启用控制; 结束; 保证即使发生异常,刷新也能恢复。 (7)Bof属性Bof也是数据集的只读属性,其作用与Eof正相反。 Bof属性用于确定当前记录是否是数据集的第一条记录。 如果Bof属性返回True,则表示已达到数据集的第一条记录。 在遍历数据集的记录时,通常还
11、需要Bof属性。 执行以下操作之一时,Bof属性设置为True。 打开一个非空数据集。2020/6/19、14,如果调用了First的Prior,并且当前位于数据集的第一条记录中,否则Bof属性返回False。程序代码如下所示: mytab te.disable controls trwhilenotmytable.BOF dobeginmy table.prior; 结束; FinallyMymable.EnableControls; 结束; 3 .编辑数据要编辑数据集的记录,首先调用Edit方法使其处于编辑状态,数据集的State属性值为dsEdit。 2020/6/19,15,注意:如果
12、使用高速缓存更新技术,即如果数据集的CachedUpdates属性值为True,则调用数据集的Post方法只需要将更改后的数据写入高速缓存,就可以直接写入数据集在这种情况下,必须调用ApplyUpdates方法将数据写入数据集。 要取消当前更改,请按键盘上的Esc键,或单击TDBNavigator控件上的Cancel按钮。 4 .插入记录要在数据集中插入新记录,首先调用Insert或Append方法使其处于插入状态。 此时,数据集的State属性值为dslnsert。 同样,调用Insert或Append方法时,数据集不一定处于插入状态,也取决于CanModify属性的值。 插入状态后,用户就
13、可以在数据控件中插入新记录并输入适当的数据。2020/6/19、16、5 .删除记录调用数据集的Delete方法删除当前记录,并将数据集返回到浏览状态。 也就是说,数据集的State属性值为dsBrowse。 如果删除当前记录,下一条记录将成为当前记录。 如果删除的记录原本是最后一条记录,则上一条记录成为当前记录。 6 .除了TDBGrid、TDBNavigator等控件之外,大多数数据控件仅在数据集的一个或多个字段中起作用,而不是整个记录。 但是,数据集提供了几种可以直接修改整个记录的方法。 AppendRecord方法:与Append类似,但可以在不调用开机自检的情况下为字段指派值。 In
14、sertRecord方法:类似于Insert,但是可以在不调用开机自检的情况下为字段指派值。 SetFields方法:为当前记录中的字段指派值,并且必须显式调用开机自检。 假设数据集有五个字段: Name、Size、Weight、Area和Bmp。 可以将2020/6/19、17和animals table.insert record ( flat fish,5 )分配给它们。上述程序在数据集中插入新记录,并为前两个字段分配值在向Weight字段和Area字段中也分配值时,可以使用以下程序代码。 withanimalstabledobeginifelocate (name,flatfish,i
15、ocaselnsitive ) then begin edit; 设置字段(NIL、NIL、5、5 )开机自检; 结束; 结束; 7 .查询特定记录(1)Locate方法Locate在数据集中搜索特定记录,并将该记录变成当前记录。 Locate方法的语法是2020/6/19,18,函数位置(字符串); constKeyValues:Variant; options:tllocationeoptions:boolean虚拟您必须传递三个参数,从上述Locate方法的语法中可以看出。 第一个是KeyFields参数,指定要搜索的字段,第二个是KeyValues参数,指定与要搜索的每个字段对应的值,
16、第三个是Options参数,设定搜索选项。 下面的示例搜索Name字段中的值为flatfish的记录。 varmylocate :布尔; sopt:tllocationooptions; BeginSOpt:=IoPartialKey; 我的位置:=动态表.位置(name,flatfish,sopt )结束; (2)Lookup方法Lookup方法与Locate方法很相似,在数据集内检索满足条件的记录。 差异在于,如果找到匹配的记录,Lookup将返回该记录的某些字段的值。 语法如下: 2020/6/19,19,函数查找(constrkeyfields:string; constKeyValu
17、es:Variant; constrresultfields:string:variant; 虚拟上述Lookup方法的语法需要传递三个参数。 第一个是KeyFidds参数,指定要在哪个字段中搜索,第二个是KeyValues参数,指定每个字段的值,第三个是ResultFields参数,指定要返回的字段的值。 下面的示例在animals表中搜索Name字段值为flatfish的记录,并返回Name、Weight、Area等字段的值。varLkResults:Variant; beginwithanimalstabedolkresults :=lookup (name,flatfish,name; Weight; Area; 结束;2020/6/19、20、5.1.3数据集的事件TDataSet的事件主要分为Before系列、After系列和On系列三类。 具体事件和意义见表5-4。 表5-4数据集的事件和意义、2020/6/19、21、Before系列Before系列的事件经常用于中止操作。 2.After系列After系列的事件通常用于在操作完成后,通过状态栏向用户通知情况。 如果删除
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福建厦漳泉城际铁路有限责任公司社会招聘34人笔试备考试题及答案详解
- 2026浙江绍兴市柯桥区稽山鉴水旅游观光巴士有限公司招聘1人笔试备考题库及答案详解
- 2026江苏南京大学YJ20260585电子科学与工程学院博士后招聘1人笔试备考题库及答案详解
- 2026浙江台州市天台县县属国有企业招聘14人笔试模拟试题及答案详解
- 2026广东东莞市横沥镇下属事业单位招聘2人笔试参考题库及答案详解
- 2026福建福州成建工程咨询有限公司招聘7人笔试模拟试题及答案详解
- 2026福建宁德福鼎市融媒文化投资发展有限公司招聘3人笔试备考题库及答案详解
- 2026云南迪庆州德钦县人资服务管理有限公司招聘8人笔试备考题库及答案详解
- 2026内蒙古自治区中蒙医药研究院招聘事业编制工作人员8人笔试模拟试题及答案详解
- 2026福建厦门市翔安投资集团有限公司招聘2人笔试参考题库及答案详解
- T/SCIA 003-2024预拌混凝土产品碳足迹核算与评价技术标准
- 开展新项目评审程序
- 断路器动特性测试仪安全操作规程
- 生产部门三年规划
- 接触网专业复习题库附答案
- 中医基础理论考试重点
- CJT 526-2018 软土固化剂 标准
- 保洁队伍人员稳定性措施
- 小学语文“支点式学习”课例探析 论文
- 缝纫车间安全生产知识培训
- 陈光中证据法学课件
评论
0/150
提交评论