第7章用TADOTable组件操纵数据.ppt

上传人:本田雅阁 文档编号:3131922 上传时间:2019-07-15 格式:PPT 页数:39 大小:740.02KB
返回 下载 相关 举报
第7章用TADOTable组件操纵数据.ppt_第1页
第1页 / 共39页
第7章用TADOTable组件操纵数据.ppt_第2页
第2页 / 共39页
第7章用TADOTable组件操纵数据.ppt_第3页
第3页 / 共39页
第7章用TADOTable组件操纵数据.ppt_第4页
第4页 / 共39页
第7章用TADOTable组件操纵数据.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第7章用TADOTable组件操纵数据.ppt》由会员分享,可在线阅读,更多相关《第7章用TADOTable组件操纵数据.ppt(39页珍藏版)》请在三一文库上搜索。

1、第7章 用TADOTable组件操纵数据,本章主要内容: TADOTable组件概述 记录的读取与修改 记录的添加与删除 数据查询 记录指针 数据过滤,7.1 TADOTable组件概述,作为数据集组件,TADOTable、TADODataSet、TADOQuery和TADOStoreProc 组件都是继承自父类TCustomADODataSet,TCustomADODataSet是由TDataSet继承而来,如图7-1所示。所以它们在属性、事件及方法上有许多相同的地方。 TADOTable 组件只能通过ADO 访问数据库中单个数据表的数据,7.1 TADOTable组件概述,7.1.1 TA

2、DOTable组件的属性 1. ADO数据集组件的共同属性,7.1 TADOTable组件概述,7.1 TADOTable组件概述,2. 对重要属性的说明 Active属性 Active属性确定数据集是否处于打开状态。设置Active属性为True,则数据集被打开,相当于调用Open方法,可以对数据库进行读或写操作;设置Active属性为False,则数据集被关闭,相当于调用Close方法。 设置Active为True,将触发BeforeOpen事件,然后设置state属性为dsBrowse,打开一个数据库游标,然后触发AfterOpen事件。 设置Active为False,将触发Before

3、Close事件,然后设置state属性为dsInactive,最后触发AfterClose事件。 在更改影响到数据库的状态或数据显示组件的状态的数据集属性时,要提前将数据集的Active属性设置为False。,7.1 TADOTable组件概述,(2) State属性 State属性表明了当前数据集的状态,其取值的含义见表。,7.1 TADOTable组件概述,(3) Connection属性和ConnectionString属性 指定所使用的数据源连接组件的名称,即TADOConnection 组件的名称。 (4) CacheSize属性 指定数据集的缓冲区大小。数据集首先把数据从数据库中取

4、出,然后保存在内存的一块区域中,这块内存区域就是所谓的缓冲区。如果设置CacheSize属性值为20则表示数据集将一次从数据库中提取20条记录,并将这 20 条记录保存在缓冲去中。缺省值为1,也是其最小值。 (5) CursorLocation属性 指定数据库游标是采用客户端模式还是服务器端模式。clUseServer 使用服务器端的数据库游标,适用于数据量大的数据集;clUseClient 使用客户端的数据库游标的时候,数据将被下载到本地计算机上,并 在本地进行操作;,7.1 TADOTable组件概述,(6) AutoCalcFields属性 该属属设为 True 则允许应用程序触发OnC

5、alcFields事件。计算字段依赖于当前记录的一个或多个字段,通过已有的字段数据进行计算。 (7) BOF属性和EOF属性 BOF属性和EOF属性用于判断当前记录指针的位置是否位于文件开始和结束处。它们都是只读的,为Boolean型。BOF属性为True时,表示当前指针指向第一条记录。EOF属性为True时,表示当前指针指向最后一条记录。 例如: if ADOTable1.BOF and ADOTable1.EOF then ShowMessage(数据集是空的。); (8) Fields属性 数据集中的字段集合,用于访问数据集中的字段。,7.1 TADOTable组件概述,例如: Edit

6、1.Text:=ADOTable1.Fields.Fields6.AsString; /读取字段值 ADOTable1.Edit; /将数据集设为编辑状态 ADOTable1.Fields.Fields6.AsString:=Edit1.Text; /设置字段值 ADOTable1.Post; /提交到数据库保存,7.1 TADOTable组件概述,3. TADOTable组件特有的属性 (1) MasterSource属性 指定一个数据源组件用于主-细表关系。该数据源组件所连接的数据集组件将作为主表用于与本数据集组件建立主-细表关系。 (2) ReadOnly属性 指定数据集中的数据是否只读

7、。 (3) TableDirect属性 指定这个表是通过表名访问还是通过SQL语句访问(仅限Select语句)。TableDirect属性为True表示可以通过SQL语句访问,为False,则只能通过表名访问。默认为False。 (4) TableName属性 指定数据表名,数据集从中读取数据。,7.1 TADOTable组件概述,7.1.2 TADOTable组件的方法 1. ADO数据集类组件的共同方法,7.1 TADOTable组件概述,7.1 TADOTable组件概述,7.1 TADOTable组件概述,7.1 TADOTable组件概述,7.1 TADOTable组件概述,2. 重

8、要方法的说明及使用 (1) 打开(Open)和关闭(Close)数据集的方法 调用Open方法将Active属性设置为True。当Active属性为True时,可以从数据库中读取数据或向数据库中写数据。 调用Close方法设置Active属性值为False。当Active属性值为False时,数据集将被关闭,无法对数据库进行读/写操作。 例如:在实际程序代码中,语句: ADOTable1.Open; 就等价于语句: ADOTable1.Active:=True; 而语句: ADOTable.Close; 等价于语句: ADOTable1.Active:=False;,7.1 TADOTable

9、组件概述,(2) DeleteRecords方法 删除记录集中的记录。 (3) SaveToFile方法 把当前数据集中的数据按照指定的格式保存到指定的文件中 ,FileName为指定的文件名,Format为保存的文件格式。 (4) GetIndexNames方法 查询表中的全部索引名,返回值将保存在参数List中,调用方法为: ADODataSet1.GetIndexNames(ListBox1.Items); (5) FieldByName方法 FieldByName方法是根据一个特定的字段名查询一个字段。FieldName是一个已存在的字段名。当只知道字段名时,可以调用FieldByNa

10、me来获取关于该字段的信息。,7.1 TADOTable组件概述,(6) 关于立即更新和批更新 ADO数据集可支持两类更新模式:立即更新和批更新。 使用立即更新,一旦调用Update方法,对数据的所有更改被立即写入数据库。 使用批更新,可以将多个记录的更改存入缓存,然后用UpdateBatch方法一次写入到数据库。 默认情况下为立即更新模式。要设置为批更新模式,必须设置下列属性的值: CursorType属性为ctKeySet(默认)或ctStatic; LockType属性为ltBatchOptimistic。,7.1 TADOTable组件概述,7.1.3 TADOTable组件的事件 T

11、ADOTable组件与其他ADO数据集组件具有完全相同的事件,如下表所示 。,7.1 TADOTable组件概述,7.1 TADOTable组件概述,7.2 记录的读取与修改,7.2.1 Field对象 Field对象对应着数据集中的字段。Field对象可以在应用程序运行的过程中动态地产生,也可以利用字段编辑器创建成为永久字段。 TField类封装了所有字段操作的行为和数据类型,它的属性、方法和事件被用于: (1)改变数据集中字段的值。 (2)将字段的值由一种类型转换为另一种类型。 (3)验证用户为字段键入的数据。 (4)定义字段中的数据如何显示和编辑。 (5)计算字段的值,当OnCalcFi

12、elds产生时。 7.2.2 使用Fields属性 TFields有两个基本属生。一个是Count属性,指明Fields对象中的字段数;一个是Fields属性,包含Fields对象,7.2 记录的读取与修改,所管理的字段列表,通过指定索引号,可以访问单字段,索引号从0开始。 7.2.3 使用FieldValues属性 使用FieldValues属性,可以通过字段名读取字段的值。如果要显示name字段的内容,可使用语句: showmessage(adotable1.FieldValuesname); FieldValues是数据集默认属性,因此,使用下面的语句效果是一样的。 showmessag

13、e(adotable1name); 7.2.4 使用FieldByName方法 FieldByName方法返回指定名称的字段对象,因此,可以使用FieldByName方法完成对字段的操作。,7.3 记录的添加与删除,7.3.1 记录的添加 可以使用数据集组件的Append、Insert、AppendRecord、InsertRecord方法添加记录,其中Append是在表末尾添加一条空白记录,Insert是在表的当前位置添加一条空白记录,AppendRecord用于在表末追加一条记录并对其赋值,InsertRecord是在表的当前位置添加一条记录并对其赋值。 1. 使用Append和Inser

14、t方法添加记录 2. 使用AppendRecord、InsertRecord方法添加记录 7.3.2 记录的删除 1. 使用Delete方法 2. 使用DeleteRecords方法 (1) 删除当前记录 (2) 删除所有记录,7.4 数据查询,ADO数据集组件提供的有关数据查询的方法有3个:Locate方法、lookup方法和Seek方法。 7.4.1 Locate方法 定位一条记录并把这条记录作为当前记录。 7.4.2 Lookup方法 搜索符合条件的记录,获取指定字段的值。找到记录后,记录指针不移动。 7.4.3 Seek方法 搜索记录并移动数据集的指针。,7.5 记录指针,每一个激活的

15、数据集都有一个记录指针指向数据集中当前记录。在窗体中,TDBEdit、TDBText、TEBMemo等组件显示的数据就是当前记录的字段值。 通过移动记录指针,可以改变当前记录。 例如: 在数据集组件ADOTable1中移动记录指针到第一条记录: ADOTable1.First; 移动记录指针到最后一条记录: ADOTable1.Last; 向后移一条记录: ADOTable.Next; 向前移一条记录: ADOTable.Prior; 向前移2条记录:,7.5 记录指针,ADOTable1.MoveBy(-2); 判断数据集为空: if ADOTable1.Bof and ADOTable1.

16、eof then ShowMessage(记录集为空。);,7.6 数据过滤,当我们在操作数据集时,往往需要对数据进行筛选。选用数据集组件Filter属性、Filtered属性、FilterOptions属性可以实现该功能,其行为类似于SQL语句中的WHERE子句。 7.6.1 利用TADOTable的Filter属性和Filtered属性 1. 在设计时设置Filter属性 例如,设置Filter属性为:Country=China,然后改变Filtered属性为True。则只能看到对应的Country字段内容为China的记录。 FilterOptions属性确定过滤方式,可以包含2个选项,

17、若包含foCaseInsensitive,表示忽略字母大小写;若包含foNoPartialCompare,表示可以用来进行局部匹配,把星号(“*”)当作一个字符,否则星号(“*”) 被当作一个掩码字符。,7.6 数据过滤,2. 在程序运行期间进行动态过滤 要在程序运行时改变Filter属性,这包括两种情况: (1)操作符右边为常量,例如: with ADODataSet1 do begin Filtered:= False; Filter := State=+QuotedStr(CA)+ OR+State=+QuotedStr(HI); Filtered := True; end; Quote

18、dStr()的作用是将字符串转换为带引号的字符串。也可以使用双单引号。比如: ADOtable1.Filter := State=CA OR State=HI;,7.6 数据过滤,(2)操作符右边不为常量,可能是通过一个变量指定的值,或由一输入框给出的值。这时需要用到Format函数。 其代码形式为: procedure TForm1.filterClick(Sender: TObject); var StateValue:string; begin StateValue:=CA; ADOtable1.filtered:=False; ADOtable1.Filter:=Format(Stat

19、e=%s,StateValue); /可改为:ADOtable1.Filter:= State=+QuotedStr(StateValue); ADOtable1.filtered:=True; end;,7.6 数据过滤,7.6.2 用OnFilterRecord事件筛选 当Filtered属性由False变为True时触发该事件。在OnFilterRecord事件处理程序中可以设置筛选条件。例如: procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:=Dat

20、aSetState=CA; end;,7. 应用实例,【例7-1】 编写一应用程序,对dbdemos.mdb数据库中的表Customer进行以下操作:根据输入的CustNo修改Phone和Contact字段的内容。 要完成以上功能,可以分两步操作: (1)用一个文本编辑框输入CustNo,根据输入的CustNo查询表customer中对应的记录。将Phone和Contact字段的值显示在另外两个文本编辑框中。 (2)在文本编辑框中修改Phone和Contact的值后,再将修改后的内容写入到数据库中。为便于观察结果,在窗体中可放置一个DBGrid组件。 【实现步骤】 (1) 启动Delphi 7

21、 (2)新建应用程序,7. 应用实例,图7-2 窗体界面,(3)定制窗体 窗体界面如图7-2所示。,7. 应用实例,表7-8 各组件属性设置,7. 应用实例,【例7-2】 在浏览数据表Customer时,根据输入的Country值过滤记录。 要完成以上功能,可以用一个文本编辑框输入Country值,根据输入的Country来设置过滤条件。 【实现步骤】 (1) 启动Delphi 7 (2)新建应用程序 (3)定制窗体 窗体界面如图7-3所示。,7. 应用实例,图7-3 窗体界面,7. 应用实例,表7-9 各组件属性设置,7. 应用实例,(4)编写代码 (5)运行程序,本章实训指导,1. 理解数据集组件,了解数据集组件共有的方法、属性和事件。 2. 掌握TADOTable组件操作数据的基本方法:读取与修改记录、添加与删除记录、查询记录、根据条件过滤记录。 3. 理解指针的概念,掌握指针的基本操作。 4. 使用所掌握的TADOTable组件的方法,为通讯录程序添加数据浏览和查询功能模块。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1