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\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

Delphi中封装ADO之我重学习记录的更多相关文章

  1. delphi 中封装的VCl窗体Tab键响应问题

    在DLL中的子窗体不会响应Tab按键的,这个时候就需要手动去指定Tab键的操作,但是前提是主窗体要向这个窗体发送一个消息,一个Tab键按下的消息.基本顺序是这样的: 1. 主窗体用Hook技术捕获Ta ...

  2. Delphi中使用ADO连接Excel

    第一部分: . 设置ADOConnection的ConnectionString属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider(这本来是用于连接Ac ...

  3. 在delphi中我用DBGrid选择多条记录,如何一次把选择的多条记录删掉

    procedure TForm1.btnDoSumClick(Sender: TObject);var  i: Integer;begin  if DBGrid1.SelectedRows.Count ...

  4. DELPHI中四种EXCEL访问技术实现

    一.引言 EXCEL在处理中文报表时功能非常强大,EXCEL报表访问也是信息系统开发中的一个重要内容,本文总结以往开发中所用到的几中EXCEL文件访问方法,在实际工作中也得到了很好的验证,本文列举了其 ...

  5. Delphi 中多线程同步的一些处理方法

    Delphi 中多线程同步的一些处理方法   当创建了多个线程,并且多个线程都要访问同一资源,,就有可能出现混乱,于是用Synchronize来控制,使同一时间只有一个线程使用那部分资源,Synchr ...

  6. 使用Spring.net中对Ado.net的抽象封装来访问数据库

    使用Spring.net中对Ado.net的抽象封装来访问数据库     Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入 ...

  7. Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)

    Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...

  8. Delphi中ADO异步执行方式

    当ADO开始处理数据后,应用程序必须等到ADO处理完毕之后才可以继续执行.但是除了同步执行方式之外,ADO也提供了异步执行的方式,允许当ADO处理时,应用程序仍然能够先继续执行.而当ADO处理数据完毕 ...

  9. DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)

    函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ...

随机推荐

  1. yarn出现“There are no scenarios ; must have at least one"

    错误信息:“There are no scenarios ; must have at least one" 背景:在将vscode自动化构建编译打包时出现这种情况,主要是执行yarn这一步 ...

  2. 安装webpack和webpack打包(此文转自Henery)

    Henery博客地址为:http://blog.csdn.net/henery_002 写的很详细,可以做参考 最近要做项目优化了,尤其是前端这块,许多js需要模块化管理和相应的优化 1.输入如下地址 ...

  3. 提示文件过大无法复制到U盘怎么解决

    1.U盘作为一个便携的移动存储工具,在我们的生活中扮演重要的角色,但 是我们经常会遇到在复制文件到U盘中的时候,U盘明显有很大的空间,却 提示文件过大无法复制,今天,我教大家一步解决这个问题!! 2. ...

  4. C++获取单链表的倒数第k个节点

    /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ c ...

  5. 在Oracle中执行动态SQL的几种方法

    转载:在Oracle中执行动态SQL的几种方法 以下为内容留存: 在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.en ...

  6. 微信小程序开发需要注意的30个坑

    1.小程序名称可以由中文.数字.英文.长度在3-20个字符之间,一个中文字等于2个字符. 2.小程序名称不得与公众平台已有的订阅号.服务号重复.如提示重名,请更换名称进行设置. 3.小程序名称在帐号信 ...

  7. 【强化学习】python 实现 q-learning 例二

    本文作者:hhh5460 本文地址:https://www.cnblogs.com/hhh5460/p/10134855.html 问题情境 一个2*2的迷宫,一个入口,一个出口,还有一个陷阱.如图 ...

  8. [Socket]Socket聊天小程序

    一个简单是Socket聊天小程序,读写操作在不同的线程中.服务器端采用线程池. 1.Server import java.io.IOException; import java.net.ServerS ...

  9. LVS负载均衡下session共享的实现方式-持久化连接

    之前简单介绍LVS负载均衡的高可用方案实施,下面详细说明LVS的session解决方案: LVS算法中,SH算法可以实现将同一客户端的请求总是发送给第一次指定的RS,除非该RS出现故障不能再提供服务. ...

  10. js怎么将 base64转换成图片

    //获取数组最后一个元素 let hasFiles = files[Object.keys(files).pop()] // 参考上面的图片 let file = hasFiles.url let n ...