| 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/ctStaticctStatic:当数据源处理了客户端的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    异步执行能力 ExecuteOptionseoAsyncExecute 异步执行
 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  |