Delphi7数据库编程之TDataSet(转)
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(转)的更多相关文章
- java数据库编程之DAO模式
第八章:DAO模式 8.1:JDBC封装 为了提高代码的维护性和扩展性,我们使用JDBC进行封装数据, 先定义统一的API,将操作数据的代码抽象到接口中,业务逻辑代码只需要调用这些接口的实现类的对象, ...
- [转] iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首 ...
- iOS 多线程编程之Grand Central Dispatch(GCD)
介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其它的对称多处理系统的系统.这建立在任务并行运行的线程池模式的基础上的. 它 ...
- Python Flask高级编程之从0到1开发《鱼书》精品项目 ☝☝☝
Python Flask高级编程之从0到1开发<鱼书>精品项目 ☝☝☝ 一 .安装环境我们使用 flask web框架,并用 sqlalchemy来做数据库映射,并使用 migrate做数 ...
- Python Flask高级编程之从0到1开发《鱼书》精品项目 ✍✍✍
Python Flask高级编程之从0到1开发<鱼书>精品项目 一 .安装环境我们使用 flask web框架,并用 sqlalchemy来做数据库映射,并使用 migrate做数据迁移 ...
- 并发编程之J.U.C的第二篇
并发编程之J.U.C的第二篇 3.2 StampedLock 4. Semaphore Semaphore原理 5. CountdownLatch 6. CyclicBarrier 7.线程安全集合类 ...
- 并发编程之J.U.C的第一篇
并发编程之J.U.C AQS 原理 ReentrantLock 原理 1. 非公平锁实现原理 2)可重入原理 3. 可打断原理 5) 条件变量实现原理 3. 读写锁 3.1 ReentrantRead ...
- Java并发编程之CAS第一篇-什么是CAS
Java并发编程之CAS第一篇-什么是CAS 通过前面几篇的学习,我们对并发编程两个高频知识点了解了其中的一个—volatitl.从这一篇文章开始,我们将要学习另一个知识点—CAS.本篇是<凯哥 ...
- 网络编程之socket
网络编程之socket socket:在网络编程中的一个基本组件,也称套接字. 一个套接字就是socket模块中的socket类的一个实例. 套接字包括两个: 服务器套接字和客户机套接字 套接字的实例 ...
随机推荐
- CentOS 7 安装Graphite
Graphite简介 Graphite是一个Python编写的企业级开源监控工具,采用django框架,用来收集服务器所有的即时状态,用户请求信息,Memcached命中率,RabbitMQ消息服务器 ...
- Redux应用单一的store原则案例详解
在开发reac单页面应用的时候,页面的展示逻辑跟数据状态的关系管理变得越来越复杂,redux很好的解决这个问题.废话不多说,直接先上官网api链接. http://cn.redux.js.org/in ...
- Docker Mysql主从同步配置搭建
Docker Mysql主从同步配置搭建 建立目录 在虚拟机中建立目录,例如路径/home/mysql/master/data,目录结构如下: Linux中 新建文件夹命令:mkdir 文件夹名 返回 ...
- Spark入门(1-2)Spark的特点、生态系统和技术架构
一.Spark的特点 Spark特性 Spark通过在数据处理过程中成本更低的洗牌(Shuffle)方式,将MapReduce提升到一个更高的层次.利用内存数据存储和接近实时的处理能力,Spark比其 ...
- SQL Server 利用触发器对多表视图进行更新
其步骤就是:利用update操作触发器产生的2个虚拟表[inserted]用来存储修改的数据信息和[deleted]表,然后将对应的数据更新到对应数据表中的字段信息中: 1.首先创建3个表: a.信息 ...
- Swing使用JavaFXweb组件
概述 swing中内嵌入web组件的 需要使用一些其他的jar包 ,但是如果使用javafx的组件,那么也比较的方便,性能也比较高. 代码 webview 在javafx 中是作为 scene出现的所 ...
- python当中的生成器
最近身边的朋友都在问我迭代器是什么回事,经常跟大家一起讨论python的迭代器,一点点的我觉着自己有了更深一层的理解.我写下这篇文章,希望能对懵懵懂懂的好伙伴有些帮助~ 我也不是什么能人,难免说错一些 ...
- 关于 Integer 值比较的问题
今天刚好遇到这样的问题,别的不说,先上代码 public class TestInteger { public static void main(final String[] args) { fina ...
- python/零起点(一、字符串)
python/零起点(一.字符串) 字符串(str) 字符串是可迭代的 str()强制转成字符串类型 字符串是有序的,且不可变的数据类型. 字符串转换整型的案例: 1 name=['guobaoyua ...
- iOS masonry 不规则tagView布局 并自适应高度
在搜索页面经常会有不规则的tag出现,这种tagView要有点击事件,单个tagView可以设置文字颜色,宽度不固定根据内容自适应,高度固定,数量不固定.总高度就不固定.最近对于masonry的使用又 ...