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. php中(包括织梦cms)set_time_limit(0)不起作用的解决方法

    背景介绍: 在做织梦冗余图片清理的功能时, 由于冗余图片太多,导致每次清理时都会超时, 后来在网上搜索了各种文章,网上有如下的解决方法: set_time_limit(0) ini_set('max_ ...

  2. [笔试题目]使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?

    [笔试题目] 使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍? StringBuffer 底层是依赖了一个字符数组才能存储字符 ...

  3. JAVA_SE基础——34.static修饰成员变量

    需求:描述一下学校的学生.  特点:都是中国人.... 测试代码1: class Student{ String name; String country = "中国"; //国籍 ...

  4. [JCIP笔记] (二)当我们谈线程安全时,我们在谈论什么

    总听组里几个大神说起线程安全问题.本来对"线程安全"这个定义拿捏得就不是很准,更令人困惑的是,大神们用这个词指代的对象不仅抽象而且千变万化.比如,我们的架构师昨天说: " ...

  5. linux查看文件内容的常见命令

    1.cat命令,显示文件的所有内容,内容过多则显示最后一屏一般用于内容较少文件 2.more命令,分页显示文件的内容一般用于文件内容过多的文件,回车显示下一行,空格显示下一页,q/Q退出 3.head ...

  6. B+树介绍

    B+树 B+树和二叉树.平衡二叉树一样,都是经典的数据结构.B+树由B树和索引顺序访问方法(ISAM,是不是很熟悉?对,这也是MyISAM引擎最初参考的数据结构)演化而来,但是在实际使用过程中几乎已经 ...

  7. 释义Oracle 11r2中并行执行相关参数

    因最近对现场某些服务器进行诊断和调整,用到了这类参数,因此对这类参数做了详尽的查阅和研究,现将该类参数释义如下,以方便同行和自己参考,禁止转载: 1.PARALLEL_ADAPTIVE_MULTI_U ...

  8. docker生态系统

    我的docker学习笔记6-docker生态   1.镜像即应用       代码构建.持续集成和持续交付        DaoCloud.Quay.IO 2.催生容器托管caas服务       基 ...

  9. groovy入门(2-1)Groovy的Maven插件安装:Plugin execution not covered by lifecycle configuration

    参考链接:http://www.cnblogs.com/rightmin/p/4945797.html 1.引入groovy的jar包 2.引入groovy编译插件 3.遇到问题 Plugin exe ...

  10. spring8——AOP之Bean的自动代理生成器

    对于上篇博客http://www.cnblogs.com/cdf-opensource-007/p/6464237.html结尾处提到的两个问题,可以使用spring提供的自动代理生成器解决.自动代理 ...