delphi adoquery的post和UpdateBatch

Post是确认当前的修改,而UpdateBatch是把已经确认但是没有存盘的数据写入数据库
当ADOQuery的CursorType是ctKeySet或者ctStatic,并且LockType是ltBatchOptimistic的时候,数据DataSet是用批量更新的更新方式。这时,每条记录修改之后,用Post确认当前修改,但是确认后的数据却并没有立即写入数据库,而是保存于缓存之中。
当调用UpdateBatch的时候,这些缓存中的修改才写入数据库。
如果不是使用批量更新的方式的时候,Post的时候,确认的修改直接写入数据库。
---------------------
作者:清风古韵
来源:CSDN
原文:https://blog.csdn.net/ttpage/article/details/9161679
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/jijm123/p/10990340.html

时间: 2024-10-11 03:44:02

delphi adoquery的post和UpdateBatch的相关文章

Delphi ADOQuery无法更新定位行问题(其它数据库访问控件类似)

在Delphi中用ADOQuery进行数据库的记录操作时,有时会报 “无法为更新定位行.一些值可能已经在最后一次读取后已更改” 这个错. 这个错通常是 你操作的记录 在数据库中已经被修改过了, 如: 在数据库中已被删除了,你用ADOQuery更新了被删除的记录 数据库表字段有默认值,你用ADOQuery插入新记录后没有重新查询一遍就再次操作该记录 暂时知道的会引起该错误的可能有这两种,归纳起来 就是 ADOQuery的记录 与 数据库 表记录 对应不上 Delphi ADOQuery无法更新定位

Delphi ADOQuery

procedure TForm1.Button1Click(Sender: TObject); var A: Array of String;//定义动态数组 Index: Integer;//定义数组下标变量 ADOQuery:TADOQuery; begin ADOQuery:=TADOQuery.create; ADOQuery.SQL.Clear; ADOQuery.SQL.Add('Select B from A'); ADOQuery.Open; Setlength(A,ADOQue

Delphi ADOQuery处理多条SQL语句

Delphi(Pascal) code var   sqlStr:String;begin  sqlStr:= ' begin '  sqlStr:= sqlStr+ 'update table1 set col1 = ''test'' where 1=2;';  sqlStr:= sqlStr+ 'update table1 set col1 = ''test2'' where 1=2;';  sqlStr:= sqlStr+ ' end '; adoquery1.Close;   adoqu

delphi ADOQUery中错误解决方法"无法为更新定位行。一些值可能已在最后...

使用delphi中的ADOQuery控件中自带的,insert ,edit,delete此操作时,有时会出现下面的错误提示,提示错误信息:"无法为更新定位行.一些值可能已在最后一次读取后已更改." 此解决方案: 出现的原因: 1.可能是修改的时候在其它地方已经重新修改过此数据集中的某些字段信息,例如我在上传文件时,修改了某表中的文件名称和文件路径,由于没有注意到,所以在修改数据,并再一次选择上传文件时,就会报出此错误; 2.数据库中的表没有主键; 3.在数据库设计时,为某些字段设置了默

Delphi ADOQuery连接数据库的查询、插入、删除、修改

//查询记录 procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery.Close; ADOQuery.SQL.Clear; ADOQuery.SQL.Add('select * from YourTABLE where 查询条件'); ADOQuery.Open; //插入记录 procedure TForm1.Button2Click(Sender: TObject); begin ADOQuery.Close; ADOQu

delphi ADOQuery 开启本地缓存

在开发 C/S 应该程序的时候,有时为了程序的运行提高效率. 需要使用 缓存功能: //ADO组件需要把 ADOQuery1.LockType:=ltBatchOptimistic; ADOQuery1.CacheSize:=1000; ADOQuery1.CursorLocation:=ctStatic; //开启缓存,这时内容存在内存中 // 如果想保存在硬盘文件需要用 ADOQuery1.LoadFromFile(); ADOQuery1.SaveToFile(); // 来处理文件 //

DELPHI中 screen.Cursor:=crhourglass; adoQuery.close; adoquery.Open; screen.Cursor:=crdefault;啥意思

这段代码大概是用来演示鼠标的用法的.具体解释如下: 使鼠标指针为沙漏状.(以表示程序正忙)screen.Cursor:=crhourglass; 把(打开的)数据库关闭.adoQuery.close;(个人以为改成这样更好:if adoQuery.Active then adoAuery.close;) 打开数据库. adoquery.Open; 把鼠标指针恢复成缺省状态. screen.Cursor:=crdefault; 如果在你程序中使用,建议用以下代码: screen.Cursor:=c

delphi如何检索adoquery里面某一列存在的重复行?

var IsHave:Boolean; begin adoquery.first; while(not adoquery.eof) do begin if(adoquery.fieldbyname('列名').asstring="用户添加的值") then begin IsHave=True; break; end; adoquery.next; end; if(IsHave)then showmessage("存在重复数据!"); end; 原文地址:https:

如何用delphi中Data Module 管理数据库连接 和Adoquery 及 datasourse 等

首先关于使用data module 的理论可以参看,里面讲的很详细:https://wenku.baidu.com/view/073aa98aa0116c175f0e48e2.html 其次为什么要用data module呢? 其主要作用就是: 1.提升数据组件的重复使用 2.便于数据集中管理和维护 3.程序结构更加清晰,数据集被单独放置,form只负责用户界面,程序结构更加清晰: 对比: 使用前: 使用后: 如何使用data module: 第1步:file/new/other/ 第2步:点d