_RecordsetPtr m_pRecordset;(全局变量)
...
我现在的需求是每次打开数据表Table,取其中的第一条记录,处理后,将记录删除,关闭记录集。
代码如下:m_pRecordset->Open((_bstr_t)strSQL,              
m_pConnection.GetInterfacePtr(), adOpenStatic,
adLockOptimistic,
         adCmdText);
...
m_pRecordset->MoveFirst();//取第一条记录
...
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
m_pRecordset->Close();但是当第二次执行该过程时,取出来的第一条记录和上次执行时是一样的,怎么回事?感觉是数据集没有刷新,怎样更新数据集呢?

解决方案 »

  1.   

    BeginTrans - 开始新事务。m_pRecordset->Delete(adAffectCurrent);CommitTrans - 保存任何更改并结束当前事务。它也可能启动新事务。在BeginTrans 和CommitTrans 之间调用Delete注意,这是m_pConnection的方法,不是recordset的方法
      

  2.   

    m_pConnection的事务处理,怎么使用?请教了!
      

  3.   

    m_pConnection->BeginTrans()后面是m_pConnection->CommitTrans()其实俺也没在VC中这么用过以前用VB的时候是这么用的俺一般删除是用DELETE的sql语句的,呵呵你去试试吧反正大概就是这个意思
      

  4.   

    如果你的程序刪除記錄后,馬上查詢數據庫,那么就會出现这种问题,因为数据库处理有一个过程。即使使用事务处理,也不能保证完全正确。可以使用sleep函数休息一下,然后再读取数据库。另外,不建议这种频繁对数据库读取的操作,既然数据是你删除的,你在界面处理一下就可以了,没有必要再读取数据库。