我的程序实现的是sql和access之间的数据导入导出,我想在程序发生异常时,之前对数据库的操作都无效,我觉得这好象是事务处理的问题,我用的一个adoconnection1连接sql,另一个adoconnection2连接access,不知道能不能实现,应该怎样实现,请指教,谢谢
解决方案 »
- 请教delphi中是怎样创建对象的?
- TCPClient控件如何接大数据量的数据?
- 初入门,看了一下tdataset,tdatasource,tdbedit的组件程序,一时搞不明白,请教哪里有介绍此几组件结构的文章?
- 关于IntraWeb的问题
- 新手提问,请多指点!
- 如何HOOK到winlogon.exe进程??
- 小弟我使用windows mediaplayer进行视频播放,如何取得视频播放的总时间?
- 三层结构的程序?安装时服务器端需要几个dll,我放了dbclient.dll,midas.dll还是不行.那位大虾帮我!!
- 夸克兄请进来
- 为什么在一个字段的ONSETTEXT事件中写一些语句,就导致这个现象。。。。(请各位看看)
- VC 中有内存文件的用法 delphi中有没有
- 怪!treeview的align属性为什么失效?
1、读取数据:这个步骤不需要事务处理,因为读取数据 不对数据库造 成影响
2、写入数据:这时为了保证数据的一致性,所以你要用事务处理了:大致的写法如下
procedure TAccountDefForm.PostUpdate;
begin
if (SysQuery.State = dsEdit) or (SysQuery.State = dsInsert) then
SysQuery.Post;
if not DataModule1.ADOConnection1.InTransaction then
DataModule1.ADOConnection1.BeginTrans;
try
SysQuery.UpdateBatch();
LogQuery.UpdateBatch();
DataModule1.ADOConnection1.CommitTrans;
FlatButton1.Enabled:=False;
FlatButton3.Enabled:=False;
except
on e:Exception do
begin
ShowMessage(e.Message);
DataModule1.ADOConnection1.RollbackTrans;
end;
end;
end;
BEGIN
读表;
开始事务;
TRY
写表;
提交事务;
EXCEPT
回滚事务;
RAISE;
END;
END;//ACCESS好像不支持事务吧.
将你的插入数据的过程单独独立出来成为一个过程或函数进行处理;