西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发Delphi → Delphi通过ADO读写数据库

Delphi通过ADO读写数据库

前往专题相关软件相关文章发表评论 来源:百度搜索时间:2012/8/28 17:50:06字体大小:A-A+

作者:西西点击:4207次评论:0次标签: Delphi 数据库

Borland Delphi8.0光盘版
  • 类型:编程工具大小:83.1M语言:中文 评分:4.0
  • 标签:
立即下载
4 页 三、 ADODataset组件

三、 ADODataset组件


    ADODataset是ADO组件中最通用的一个组件,它能获取并代表任何其他ADO组件从数据库返回的数据集合。数据集是通过SQL命令返回的一个表或者多个表数据。
    要使ADODataset数据集组件能够正常地发挥作用,则应首先设置其Connection或Connection String属性来建立起到数据库的连接。如果要使用一个RDSDataSpace对象将该数据集连接到基于ADO的应用程序服务器,则需要RDSConnection属性设置为一个TRDSConnection对象。
由于ADODataset组件必须返回一个结果集,所以其CommandText属性中如果使用语句,则只能使用SELECT语句,而不能使用一引起数据操作语言(DML),比如DELETE、INSERT和UPDATE语句。
同时由于该数据集可以使用SQL 语句。所以可以从一个或多个基表中查询数据。

? ADODataset的常用属性
1) Active
    指示当前的记录集是否处于打开状态,调用open方法,打开数据库,Active值为True;调用close方法,数据库关闭,则Active为False;
    只有Active的值为False时,应用程序才能对数据库进行读写操作。需要将Active变为True的情况是:
v 数据库的状态设为dsBrowse(浏览模式、查看、扫描数据)。
v 如果程序中加载了BeforeOpen事件,在该事件被触发时。
v 如果程序加载了AfterOpen事件,在该事件被触发时。
v 通过记录集打开一个数据指针时。
    在更改数据集属性,且这些属性影响到数据库的状态或数据显示组件的状态时,要提前将数据集的Active属性设置为False;
2) AutoCalcFields
    设为True,则允许应用程序触发OnCalcFileds事件。计算字段依赖于当前记录的一个或多个字段。通过已有的字段数据统计计算。该值为True,在记录数据被修改或者编辑时,就触发OnCalcFields事件。应用程序自动更新计算字段的值,以保证数据的一致性 。能触发OnCalcFileds事件的条件是:
v 数据集组件的状态变为dsEdit。
v 记录已经被修改。
v 应用程序从数据库中重新获得一条记录。
    可以看出,上述的情况并不都需要更新计算字段。如果用户需要频繁地修改数据,则OnCalcFields事件就会不断地调用。频繁地调用在一定程度影响了应用程序的性能。在这种情况下,可以将属性AutoCalcFields设为False。
3) Cachesize
    指定数据集的缓冲区大小。数据集首先把数据从数据库中取出,然后保存在内存的一块域中。这块内存区域就是所谓的缓冲区。如果设置CacheSize为20,则表示数据集将一次从数据集将一次从数据库中提取20条记录并将这20条记录保存到缓冲区中。缺省值为1,也是最小值。


4) CommandText


     指定数据集合中包含的命令,可以是SQL语句,一个表名或者一个存储过程名。常用的调用形式为:
with ADODataset1 do
begin
    commandType:=cmdText;
command Text:=’Select * From customerTable’;
open;
end;

5) Filer


    数据集的过滤器,通过使用过滤器可以把那些不需要的数据过滤掉。设置Filter属性的典型方法为:
with ADODataset1 do begin
Filterd:=False;
Filter:=’State=’+Quotedstr(‘CA’)+’OR’+”State=’+Quotedstr(‘CA’);
Filterd:=True;
End;
    如果用户修改了带有过滤数据集的数据,修改的结果如果不满足过滤器的条件,则修改的数据就自动从当前的数据库中消失。

6) MaxRecord


   最大 返回数据集记录数,默认值为0 返回所有数据。

7)  RecordCount


显示与数据集相连的记录的总数

 

详细的属性大家可以看最后一页


 ADODataset的常用方法


1) GetIndexNames(List:Tstring)


    查询表中的全部索引,返回值将保存在参数List中,调用方法为:
ADODataset1.GetIndexNames(ListBox1.Items);


2) DeleteRecords(AffectRecords:TaffectRecords=arAll)


    删除记录集的记录,参数AffectRecords用于指定要删除的具体记录。它的取值可为如下:
AffectRecords的参数及说明
参数值 说明
arCurrent 仅删除当前记录
arFiltered 删除满足过滤器过滤条件的数据
arAll 删除记录的所有记录
arAllChapters 删除ADO连接数据部分的全部记录
    缺省值为arAll,删除当前记录集中的所有记录。

3) Locate(const KeyFields:String;constKeyValues:Variant;Options:TLocateOptions)


    定位一条记录并把这条记录作为当前记录。其中KeyFields是索引的字段名;KeyValues是要查找的值;Options是定位数据选项,他的值可以是:
v IoCaseInsensitive:定位数据不区分大小写。
v IoPartialkey:部分匹配定位查找数据。


4) Requery(options:TexecuteOption=[])


    刷新数据集中的数据,它是通过重新执行原来的命令或SQL语句来重新生成记录集。


5) SaveToFile(constFileName:String=’’;Format:TpersisFormat=PftAdTg)

    把当前数据集中的数据按照指定的格式保存到指定的文件中。FileName为指定的文件名:Format为保存的文件格式,它可以选取下列值:
v PfAdTG:按照ADTG(Advanced Data Tablegram)格式生成文件。
v PfXML:按照XML格式保存文件。


6) seek(constKeyValues:Variant;seekOption:Tseekoption=SoFirstEQ)
    搜索记录并移动数据集的指针。搜索动作是以当前数据集中的索引为搜索依据。其中KeyValues为被搜索的值。
    Success:=ADODataSet1.seek(‘Jones’,SoFirstEQ);
    如果搜索到复合索引的值,则返回True,反之为False,也可以同时搜索多个值:
    ADODataSet1.seek(VarArrayof([90030,90020]),soFirstEQ);
    这就需要利用函数VarArrayof()构造一个参数传递给KeyValues。
    Seek的第二个参数seekoption限定了搜索行为的动作。

可以取的值如下:


Seekoption的取值及说明
参数值 说明
SoFirstEQ Rexord 数据库指针定位在第一条匹配的记录处,如果没有任何匹配记录则指向数据库的未记录
SoLastEQ Record 数据库指针定位在最后一条匹配的记录处,如果没有任何匹配记录则指向数据库的未记录
SoAfterEQ Record 如果搜索到匹配记录,在指向匹配记录的下一条,如果没有找到则指向最近似匹配记录上
SoAfter 指向匹配记录的下一条
SoBeforeEQ 如果搜索到匹配记录,在指向匹配记录的前一条,如果没有找到则指向最近似匹配记录上
SoBefore 指向匹配记录的前一条

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    第 1 楼 山西太原金玉网吧(山西大学商务学院) 网友 客人 发表于: 2013/11/19 20:15:07
    写的太好了

    支持( 0 ) 盖楼(回复)

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)