Delphi中封装ADO之我重学习记录。。。


======================================================
注:本文源代码点此下载
======================================================

keylife富翁笔记

作者: hongyuan

标题: delphi中封装ado之我重学习记录。。。

关键字:

分类: 我学习delphi。
       我努力

密级: 保护

(评分: , 回复: 0, 阅读: 268) »»

ado实际上是是微软以com技术,封装底层的ole-db(也是com)方便开发人员使用的一另数据储蓄技术。

ado原生对象:

connection对象,使用方法:

adoc:=createoleobject('adodb.connection');

adoc.openn(连接串)

recordset对象,使用方法:

ador:=createoleobject('adodb.recordset');

ador.activeconnection:=adoc;

ador.open('select * from sysobjects',adoc,adopenstatic,adlockoptimistlc,adcmdtext);

command对象,略

2005-11-4 11:43:30

修改笔记

发表评语»»»

2005-11-4 12:20:25

borland ado 通过封装原生ado,提供给用户的一套vcl组件。包括:

tadoconnection

connectionstring 链接字符串

connectoptions: coconnectunspecified 未指明,即同步连接;应用程序在连接执行完成后,才执行后续代码。

coasyncconnect 异步连接.立刻执行后续代码。

*cursorlocation 代表指针存储的地方。显著影响执行效率。

*isolationlevel:事务层次

*mode 连接充许的存取行为

provider代表ado驱动程序种类,即连接到什么数据源。

tadocommand

用于执行不返回数据集指定最佳选择,也可以通过adodataset返回数据集。

tadodataset

用于提取数据

tadotable

相当于tadodataset,只是相当于commandtype=cmdtable

tadoquery

tadostoredproc

trdsconnection

2005-11-4 12:21:18commandtype

cmdunknown 未知的命令类型,它会造成ado执行变慢

cmdtext 文字类型的命令,通常是sql命令或存储过程的程序cmdtable 数据表的名称

cmdstoredproc 执行的存储过程名称

cmdfile 包含命令的文件名称

cmdtabledirect 指明数据表的名称,数据表所有的字段都会回传在结果数集中

2005-11-4 12:56:53如何才能使用tadoquery的batchupdate

1.cursortype为ctkeyset/ctstatic

ctstatic:当数据源处理了客户端的sql命令并回传结果数据集后,这些数据集就由ado的cursor引擎来处理。即相当于数据库的副本,是一组静态的数据集(别的用户修改了数据库,这个数据集不反映(即不同步))。client-side cursor+static是不错的组合。

ctkeyset:不但提供类似static cursor的能力,充许浏览结果数据集中的数据,还能在客户端看到被其它用户修改的并储存在数据库中的最新数据。在ado缓存中只保存键值字段信息,这样在客户端需要数据时,根据键值信息动态到数据源中查询最新数据,回传客户端。(不过只能看到修改的数据,看不到新增的数据,键值一经读出不不在修改,同时会产生较大负何)

2.locktype为ltbatchoptimistic

3.执行的sql命令是select.

batchupdate的参数

arcurrent 只更新当前记录

arfiltered 只把符合过滤条件的数据修改更新回数据源

arall 把所有数据修改更新回资源中

arallchapters更新所有被影响的chapters,章?不懂。

cancelbatch 取消未更新数据

batch方式下可用的数据筛选filtergroup:

如:fitered:=true;filtergroup:=fgnone;

fgunassigned 不过滤数据

fgnone 相当于fitered:=false;

fgpendingrecords 显示修改过未更新的数据或未取消的数据

fgaffectedrecords 显示上次更新数据

fgfetchedrecords 显示缓存中的数据。

fgpredicate 显示删除数据

fgconflictingrecords 更新错误的数据

其它cursortype

ctopenforwardonly:只能向前读取数据;

ctdynamic:数据源处理客户端sql命令后,只会把结果数据集的键值传给ado引擎,并且把客户端recordset对象指定的cachesize笔数传回。当客户端需要浏览其他不在目前ado缓存中的数据时,ado重新建立一份数据库取出的新的键值字段信息,再根据新键值取得下一个区块的数据。

ado在使用sql server时,其如果采用client-side cursor方式,无论什么lock type都将使用static方式。

2005-11-4 13:15:44将tadoquery数据从xml文件中读出或存与xml文件中。

savetofile('c:\outdata\test.xml',pfxml)

loadfromfile('c:\outdata\test.xml')

2005-11-4 13:30:27通过onfilterrecord事件筛选数据

procedure usefilterrecord(dataset: tdataset;var accept: boolean);

var

scompany:string;

begin

scompany:=dataset.fieldbyname('company').asstring;

if ((pos('银行',scompany0) then

accept:=true

else accept:=false;

end;

adoquery.filtered:=false;

adoquery.onfilterrecord:=usefilterrecord;

adoquery.filtered:=true;

说明:如果公司名称包括有银行或信托就通过筛选;在此可以更灵活的使用delphi或自定义方法处理更为复杂的本地筛选。

2005-11-4 14:19:50异步执行能力

executeoptions

eoasyncexecute 异步执行

eoasyncfetch异步提取

eoasyncfetchnonblocking 无阻塞方式异步提取

eoexecutenorecords 无返回记录执行

onfetchprogress ado执行过程中会调用此事件,直到结束为止,可用于进度条显示

onfetchcomplete ado执行完成后会调用此事件

2005-11-4 15:51:37值属性

adodelphi

originalvalue:原始值oldvalue

newvalue:新值newvalue

underlyingvalue:其它用户修改过的值currentvalue

2005-11-4 16:15:52关于recordsset分页与定位

recordsset可以将数据表中所有的数据以页次的方式切割,程序员可指定页号获最相应数据。

可能通过属性设置相关值

absolutepage 改变当前页

pagecount 总页数,只读

pagesize 每页行数

2005-11-4 16:48:00cachesize=1000,数据提取最快

cachesize:数据缓冲区大小,指ado从ole-db提取数据并缓冲数据的笔数。ole-db是如何向数据库提取数据的呢?

2005-11-4 17:06:32clientdataset的使用

http://www.delphibbs.com/keylife/iblog_show.asp?xid=4566


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值