如何批量更新数据库内容? 像PB等操作数据库时,都可以先进行更改,然后将用户的更改更新到数据库中,但delphi中却是修改一条,更新一条,有没有什么方法可以实现类似PB中操作数据库的工能?(我太笨了,分不多,见谅) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 事务 transactionADOConnection1.BeginTrans;try //批量修改 ADOConnection1.CommitTrans;except ADOConnection1.RollbackTrans;end;//end of try AdoQuery1.LockType:=ltBatchOptimistic;//......修改,添加adoQuery1.UpdateBatch; //批量提交 要么像楼上的,要么可以直接用sql批量更新 我想我的意思是用户在象DBGRID这样的组件上直接修改,但不是实时更新到数据库中,而是当用户按下保存按钮后,用户更新的所有数据才保存到数据库中。 “我想我的意思是用户在象DBGRID这样的组件上直接修改,但不是实时更新到数据库中,而是当用户按下保存按钮后,用户更新的所有数据才保存到数据库中。”试试用事务应该可以的 在帮助里看看LockType;设置ltBatchOptimistic时才会批量提交,就是数据集使用UpdateBatch方法的时候,数据才会提交到SERVER上,否则修改无效 你的意思大家明白,不过你没有明白大家的意思,事务的作用就是把修改的多条数据批量保存或更新到数据库中:ADOConnection1.BeginTrans;try ...... ADOConnection1.CommitTrans;except ADOConnection1.RollbackTrans;end jianke5555(汐)的意思是不是可以这样做:打开数据修改界面--开始事务--用户修改数据--用户点击保存按钮--提交事务或回滚。对吗?我试试。谢先。 另:使用adoquery时如使用adoconnection的事务处理,是否需要同时将locktype设置为ltBatchOptimistic?? 直接使用,例如: ADOQuery1.Connection := ADOConnection1; ADOQuery2.Connection := ADOConnection1; ADOConnection1.BeginTrans; try //可以同时用 ADOQuery1 和 ADOQuery2 修改数据库 ADOConnection1.CommitTrans; except ADOConnection1.RollbackTrans; end; 我想我的意思是用户在象DBGRID这样的组件上直接修改,但不是实时更新到数据库中,而是当用户按下保存按钮后,用户更新的所有数据才保存到数据库中。/////////////////////////////////////////////////////AdoQuery1.LockType:=ltBatchOptimistic;//......修改,添加try adoQuery1.UpdateBatch; //批量提交except adoQuery1.CancelBatch;end;只操纵一个表用不着事务处理. 楼上大大们的代码你可以分开用,就可以满足你的要求。比如,在查询按钮里,查询出结果后,加上AdoQuery1.LockType:=ltBatchOptimistic;客户修改完,点击提交按钮的时候,就写下面的代码:tryadoQuery1.UpdateBatch; //批量提交exceptadoQuery1.CancelBatch;end;要我做,在二层中我更愿意用TBDEClientDataSet,open,修改完后,在提交按钮里直接tbdeclientdataset.applyupdates(0)即可 可以用事物,也可以用好象叫updatesql这样的控件,修改后需要applyupdate才写硬盘 delphi 怎么将一个字符置为空 【纪念帖】倾家荡产来押宝,万分散尽还复来 为什么IdUDPClient.ReceiveString的值总是空的 组合的问题,请大家看下 多数据库查询统计、分析的问题 IdTCPServer 控件为什么在程序时ACTIVE:=FALSE;出错. 在线收集大家最喜欢玩的游戏(公司一个项目要用到,来者有分啊,下班前结算) ▲▲▲▲SQL语句问题!!!▲▲▲▲ 请问哪里有DELPHI开发人员指南的附书源代码? 为什么我在编译项目时老是提示如下错误? 数据批处理问题,很急 qrdbtext显示不了那么数据怎么办?
try
//批量修改
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;//end of try
AdoQuery1.LockType:=ltBatchOptimistic;
//......修改,添加
adoQuery1.UpdateBatch; //批量提交
”
试试用事务应该可以的
ADOConnection1.BeginTrans;
try
......
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end
打开数据修改界面--开始事务--用户修改数据--用户点击保存按钮--提交事务或回滚。
对吗?
我试试。
谢先。
使用adoquery时如使用adoconnection的事务处理,是否需要同时将locktype设置为ltBatchOptimistic??
ADOQuery1.Connection := ADOConnection1;
ADOQuery2.Connection := ADOConnection1;
ADOConnection1.BeginTrans;
try
//可以同时用 ADOQuery1 和 ADOQuery2 修改数据库
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
//......修改,添加
try
adoQuery1.UpdateBatch; //批量提交
except
adoQuery1.CancelBatch;
end;只操纵一个表用不着事务处理.
比如,在查询按钮里,查询出结果后,加上AdoQuery1.LockType:=ltBatchOptimistic;
客户修改完,点击提交按钮的时候,就写下面的代码:
try
adoQuery1.UpdateBatch; //批量提交
except
adoQuery1.CancelBatch;
end;
要我做,在二层中我更愿意用TBDEClientDataSet,open,修改完后,在提交按钮里直接tbdeclientdataset.applyupdates(0)即可