zoukankan      html  css  js  c++  java
  • Delphi中封装ADO之我重学习记录

    delphi adodataset ctstatic 数据是缓存在服务器端还是客户端

     答:客户端,开启本地缓存功能后,就能数据在本地批量修改后,再批量提交,减少了网络传送
     

    原创,专业,图文 Delphi中封装ADO之我重学习记录 - Delphi,封装,ADO,学习,记录 今日头条,最新,最好,最优秀,最靠谱,最有用,最好看,最有效,最热,排行榜,最牛,怎么办,怎么弄,解决方案,解决方法,怎么处理,如何处理,如何解决

    keylife富翁笔记
    作者�: hongyuan
    标题�: delphi中封装ado之我重学习记录。。。 
    关键字: 
    分类�: 我学习delphi,我努力 
    密级�: 保护
    (评分: , 回复: 0, 阅读: 268)  »»

    此文来自: 马开东云搜索 转载请注明出处 网址: http://m.makaidong.com

    此文原标题: Delphi中封装ADO之我重学习记录 来源网址: http://m.makaidong.com/博客园最新/3/0_8636.html

    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 代表指针存储的地方。显著影响执行效率。
      *Iphone 苹果 ios lationlevel:事务层次
      *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 est.xml',pfxml)
    loadfromfile('c:outdata est.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

  • 相关阅读:
    PHP+MySQL
    Appstore排名前十的程序员应用软件
    架构师的平凡之路
    程序员,如何三十而立?
    不懂技术也可以轻松开发一款APP
    php语法学习:轻松看懂PHP语言
    你真的了解软件测试行业吗?
    十个程序员必备的网站推荐
    从更高点看软件开发的侧重点
    php如何实现文件下载
  • 原文地址:https://www.cnblogs.com/jijm123/p/10529695.html
Copyright © 2011-2022 走看看