在VC中使用ODBC,ADO编程如何使用事务处理功能 我在VC中使用ODBC,ADO,DAO进行数据库开发时,有多个线程在对数据库进行操作,如果不加互斥是否会产生一个线程没有写完,别一个线程就读的情况,是否ODBC,ADO,DAO本来在内部就有这一个功能,我只是想得太多,那如果我要把几个操作合为一个事务又如何做。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想运用事务应该是比较安全的,因为操作如果出现异常,可以使用RollBackTrans取消这次事务,保证数据库信息的完整。具体用法如下TRY{ pDBConnect->BeginTrans(); …… pDBConnect->CommitTrans();}CATCH (_com_error& e){ AfxMessageBox(e.ErrorMessage()); pDBConnect->RollbackTrans(); return;}一旦事务处理中出现异常,异常处理处使用RollBackTrans取消这次事务,数据库回到BeginTrans以前的状态 我认为用事务还不能解决问题,比方说,数据库中有两个数据value1,value2,当线程1(或事务)修改了value1而来不及修改value2时,线程2就访问到了value1和value2,这样就就导致了读取脏数据,还可能有丢失修改和不可重复读的错误。因此,应该使用封锁协议(x锁和s锁 ) lyrzhlgq(笑天,笑地)说的如果是一次操作应该没有问题,如果是这样修改两个值是一个操作应当不会出现 Akagg(敬哥)的情况,我已前都加锁,但是感觉不加应当没有什么问题,前来问问,3天内完帖 cs模式 MFC DLL中如何绑定OCX事件 error C2065: 'OnPaint' : undeclared identifier 是什么原因啊??? 完成端口读写乱套问题 高分送出!一个很简单的sql语句,很急 Microsnow(冰火) 接分 D3D蒙皮网格的疑问 Release中的问题!! 有谁能够告诉我有关海运方面的管理系统该如何去做? 一个小问题: 请问如何去掉_bstr_t类型转换引起的警告 MDI如何序列化到Access数据库?
TRY
{
pDBConnect->BeginTrans();
……
pDBConnect->CommitTrans();
}
CATCH (_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
pDBConnect->RollbackTrans();
return;
}
一旦事务处理中出现异常,异常处理处使用RollBackTrans取消这次事务,数据库回到BeginTrans以前的状态
比方说,数据库中有两个数据value1,value2,
当线程1(或事务)修改了value1而来不及修改value2时,线程2就访问到了value1和value2,
这样就就导致了读取脏数据,
还可能有丢失修改和不可重复读的错误。
因此,应该使用封锁协议(x锁和s锁 )