TDataSet类由TBDEDataSet(BDE组件)、TCustomADODataSet(ADO组件)、TIBCustomDataSet(InterBase组件)、TCustomSQLDataSet(dbExpress组件)和TCustomClientDataSet子类组成。

下面介绍DataSet类中比较重要的属性(可能会有取舍,等到真正做项目用到的时候在进行补充)

1.Active:判断数据库是否已打开;

2. Bof:判断数据集的第一条记录是否激活(且在以下状态下为true:1.打开一个数据集;2.用First方法访问数据集;3.使用Prior方法且该方法已失效;4.设置一个空范围或数据集的setRange方法);

3. BookMark:在DataSet中设置一个书签;

4. Buffers:在内部缓存中提供索引来存取记录的缓冲区;

5. CurrentRecord:在记录缓存区的内部缓存中的当前记录的索引;

6. DataSource:表示其他提供值的数据集的数据源,其默认值为nil;

7. Eof:判断数据集是否指向最后一条记录(在以下状态下为true:1.打开一个空的数据集;2.调用Last方法;3.调用next方法但当前记录已经是最后一条记录;4.对空范围或记录调用SetRange方法);

8. Found:移动到一个不同的记录上是否成功;

9. IsUniDirectional:判断数据集是否为TCustomSQLDataSet的子集;

10. Modifid:活动的记录是否可以修改;

11. RecNo:返回在一个数据集中已活动的记录条数;

12. RecordCount:与数据集关联的记录条数;

13. RecordSize:表示需要内部缓冲区的大小(在TDataSet中,RecordSize为0);

14.State:设定当前数据集的操作模式的状态(打开一个数据集,状态由dslnactive变成dsBrowse;编辑状态(dsEdit);插入状态(dsInsert);调用SetKey或SetRange(dsSetKey);Posting或canceling(由当前状态变为dsBrowse);Closing数据集(由当前状态变为dslnactive));

15.FieldValue:在数据集的活动记录中提供对所有字段的值的访问方法。(重要)

下面介绍TDataSet类中比较重要的方法:

1.ActiveBuffer:返回一个指向活动记录缓存的指针。(经常与bookmark配合来记录活动记录缓存中bookmark的信息)

2.Append:添加一个新的、空的记录到这个数据集的末尾。(重要)

2.1 AppendRecord:添加一个新的、空的记录到数据集的末尾并自动post。例如

Customer.AppendRecord([CustNoEdit.Text,CoNameEdit.Text, AddrEdit.Text, Null, Null, Null, Null, Null, Null, DiscountEdit.Text]);

3.FieldByName:根据字段的名称来访问(只用用来访问已存在的字段,否则会报EDatabaseError错误)。(重要)

4.Post:将已修改过的记录写入到数据库或日志中[ADO组件直接将数据提交到数据库服务器]。(重要)

procedure TForm1.Button1Click(Sender: TObject);

begin
SampleTable.Append; //添加一个新的记录
SampleTable.FieldValues['ALPHANUMERIC'] := Edit1.text; //设定两个字段并赋值
SampleTable.FieldValues['INTEGER'] := StrToInt(Edit2.text);
SampleTable.Post; //提交记录到数据库或日志
end;

5.Cancel:如果活动的记录没有post,则可以取消活动的记录。但如果记录的状态不为(dsEdit or dsInsert),则方法无效。(重要)

6.ClearFields:清空活动记录的所有字段的值。

7.Close:关闭一个数据集。(重要)

8.Create:创建一个TDataSet对象。(重要)

9.Delete:删除一个活动记录并指针移动到DataSet对象的下一个记录。(重要)

10.Destory:销毁DataSet对象(通常情况下DataSet有系统自动回收)。(重要)

11.1 DisableControls:利用数据控件显示与一个DataSet对象关联的禁用数据。

11.2 EnableControls:与DisableControl刚好相反。

12.Edit:DataSet对象进入编辑状态。(重要)

13.FindField:搜索指定DataSet的字段。(如果未找到,则返回nil)(重要)例如:

with Table1 do
begin
FindField('CustNo').AsString := '1234';
Fields[0].AsString := '1234';
end;

14.1 FindFirst:是否指定DataSet对象的第一条记录,返回bool类型。(重要)

14.2 FindLast:与FindFirst方法刚好相反。(重要)

14.3 FindNext:判断指针是否定位到DataSet对象的下一个数据记录,返回bool类型。(重要)
14.4 FindPior:与FindNext方法刚好相反。(重要)
以上方法如返回false,则表示活动记录为成功修改;返回true,则表示修改成功。

15. First:移动到DataSet的第一条记录。调用该方法的目的是为了让DataSet的第一条记录设置为active。(重要)

16. 1 BookMarkVid:指定书签的有效性。

16.2 CompareBookMarks:用虚方法来比较两个书签。(如果BookMark1>BookMark2,则CompareBookMarks(BookMark1,BookMark2)>0)

16.3 GetBookMark:为数据集的活动记录分配标签。(由TBookMark得到)

16.4 SetBookMark:为数据集的活动记录设置标签。

16.5 GotoBookMark:定位到数据集活动记录被书签标记的位置上。(重要)

16.6 FreeBookMark:释放分配给指定标签的内存。(重要)例如:

procedure TForm1.CopyDataClick(Sender: TObject);
var
SavePlace: TBookmark;
PrevValue: Variant;
begin
with MyData do
begin
{ get a bookmark so that we can return to the same record }
SavePlace := GetBookmark; //得到一个标签
try
{ move to prior record}
FindPrior;
{ get the value }
PrevValue := Fields[0].Value;
{Move back to the bookmark this may not be the next record anymore if something else is changing the dataset asynchronously }
GotoBookmark(SavePlace);
{ Set the value }
Fields[0].Value := PrevValue;
{ Free the bookmark }
finally
FreeBookmark(SavePlace);
end;
end;
end;

17. GetCurrentRecord:返回在缓存中的记录。(如返回false,则表示缓存区填充失败;如返回true,则缓存成功)(重要)
18. GetDetailDataSets:将不是嵌套的数据集填充到一个数据集列表中。

19. GetFiledData:在缓存中检索当前字段的值。(返回bool值,如返回false,则表示值未被成功提取)

20.1  Insert:向数据集插入一个新的、空的记录。(重要)

20.2 InsertRecord:向数据集插入一个新的、空的记录并自动post。(重要)

21. IsEmpty:判断数据集是否为空。(重要)

22. IsLinkedTo:判断数据集是否通过DataSource连接。(重要)

23. Last:将指针移动到数据集的最后一条记录。(重要)

24. MoveBy:从一个活动记录移动到另一个记录。(重要)

25. Next:移动到下一条记录。(重要)

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
with ProgressBar1 do
begin
Min := 0;
Max := Customers.RecordCount;
Customers.First;
for i := Min to Max do
begin
Position := i;
Customers.Next;
end;
end;
end;

26. Open:打开数据集。(重要)

Delphi7数据库编程之TDataSet(转)的更多相关文章

  1. java数据库编程之DAO模式

    第八章:DAO模式 8.1:JDBC封装 为了提高代码的维护性和扩展性,我们使用JDBC进行封装数据, 先定义统一的API,将操作数据的代码抽象到接口中,业务逻辑代码只需要调用这些接口的实现类的对象, ...

  2. [转] iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用

    介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首 ...

  3. iOS 多线程编程之Grand Central Dispatch(GCD)

    介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其它的对称多处理系统的系统.这建立在任务并行运行的线程池模式的基础上的. 它 ...

  4. Python Flask高级编程之从0到1开发《鱼书》精品项目 ☝☝☝

    Python Flask高级编程之从0到1开发<鱼书>精品项目 ☝☝☝ 一 .安装环境我们使用 flask web框架,并用 sqlalchemy来做数据库映射,并使用 migrate做数 ...

  5. Python Flask高级编程之从0到1开发《鱼书》精品项目 ✍✍✍

    Python Flask高级编程之从0到1开发<鱼书>精品项目  一 .安装环境我们使用 flask web框架,并用 sqlalchemy来做数据库映射,并使用 migrate做数据迁移 ...

  6. 并发编程之J.U.C的第二篇

    并发编程之J.U.C的第二篇 3.2 StampedLock 4. Semaphore Semaphore原理 5. CountdownLatch 6. CyclicBarrier 7.线程安全集合类 ...

  7. 并发编程之J.U.C的第一篇

    并发编程之J.U.C AQS 原理 ReentrantLock 原理 1. 非公平锁实现原理 2)可重入原理 3. 可打断原理 5) 条件变量实现原理 3. 读写锁 3.1 ReentrantRead ...

  8. Java并发编程之CAS第一篇-什么是CAS

    Java并发编程之CAS第一篇-什么是CAS 通过前面几篇的学习,我们对并发编程两个高频知识点了解了其中的一个—volatitl.从这一篇文章开始,我们将要学习另一个知识点—CAS.本篇是<凯哥 ...

  9. 网络编程之socket

    网络编程之socket socket:在网络编程中的一个基本组件,也称套接字. 一个套接字就是socket模块中的socket类的一个实例. 套接字包括两个: 服务器套接字和客户机套接字 套接字的实例 ...

随机推荐

  1. $.each遍历json数组

    1.遍历单层json数组 我们把idx和obj都打印出来看看,到底是什么东西 var json1 =[{"id":"1","tagName" ...

  2. New UWP Community Toolkit - AdaptiveGridView

    概述 UWP Community Toolkit  中有一个自适应的 GridView 控件 - AdaptiveGridView,本篇我们结合代码详细讲解  AdaptiveGridView 的实现 ...

  3. js判断IE浏览器版本(IE8及以下)

    var DEFAULT_VERSION = 8.0; var ua = navigator.userAgent.toLowerCase(); var isIE = ua.indexOf("m ...

  4. vmvare入门(1)使用移动,不要使用复制

    1.复制虚拟机会产生新的自动网卡,原来的 System Eth0废了? 2.xftp链接的时候,要选择sftp方式连接,utf8编码.

  5. Vue全家桶

    简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...

  6. python中文编码坑

    打印list的时候unicode对象不会自动转为中文!

  7. Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?

    Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程?   麦苗答:方法有多种,可以使用DBMS_MET ...

  8. Gold well平台罗琪:叙利亚战火令黄金看涨意愿强烈

    Gold well平台罗琪:叙利亚战火令黄金看涨意愿强烈基本面分析:纸黄金交易通网显示,全球最大黄金上市交易基金(ETF)截至04月14日黄金持仓量较上日持平,当前持仓量为865.89吨,本月止净增持 ...

  9. 一、spring的成长之路——代理设计模式

    java常用的设计模式详解: 1.代理模式(JDK的动态代理) [IDept.java] ​ 这是一个简单的就接口,进行数据的更新 package com.itcloud.pattern.proxy; ...

  10. [LeetCode] Target Sum 目标和

    You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symb ...