读书人

关于ADOQuery更新两个表时可不可以同

发布时间: 2012-12-30 10:43:15 作者: rapoo

关于ADOQuery更新两个表时,能否同时更新或同时回滚??
我以前都是如下用:

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update 表1 ...");
ADOQuery1->ExecSQL();

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update 表2 ...");
ADOQuery1->ExecSQL();

我现在需要更新这两个表时,同时更新或同时回滚。
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update 表1 ...");
ADOQuery1->SQL->Add("update 表2 ...");
ADOQuery1->ExecSQL();

这样是否能够达到需要呢??

谢谢各位!!
[解决办法]
用事务。

ADOConnection1->BeginTrans();
try
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update 表1 ...");
ADOQuery1->SQL->Add("update 表2 ...");
ADOQuery1->ExecSQL();

ADOConnection1->CommitTrans();
}
catch(...)
{
ADOConnection1->RollbackTrans();
}

[解决办法]
当然,上面的代码是假设ADOQuery1的连接为ADOConnection1
[解决办法]

ADOQuery1->SQL->Add("update 表1 ...");
ADOQuery1->SQL->Add("update 表2 ...");

於 IB/FB ,每次提交sQL命令都成一事理,做也就足了要求。
但於 SQL Server,好象SQL句是怎的,不保障句失就全部回溯,有部分成功不算失之。不同的,其有所不一。所以是象ccrun的那,式使用事,才能保障。

读书人网 >C++ Builder

热点推荐