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:18 CommandType
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('银行',sCompany<>0) and ((pos('信托',sCompany<>0) 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 值属性
ADO DELPHI
OriginalValue:原始值 OldValue NewValue:新值 NewValue underlyingValue:其它用户修改过的值 currentValue
2005-11-4 16:15:52 关于RecordsSet分页与定位
recordsset可以将数据表中所有的数据以页次的方式切割,程序员可指定页号获最相应数据。 可能通过属性设置相关值 AbsolutePage 改变当前页 PageCount 总页数,只读 PageSize 每页行数
2005-11-4 16:48:00 CacheSize=1000,数据提取最快
CacheSize:数据缓冲区大小,指ADO从OLE-DB提取数据并缓冲数据的笔数。OLE-DB是如何向数据库提取数据的呢?
2005-11-4 17:06:32 ClientDataset的使用
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4566
|
请发表评论