C++访问Access数据库,在更新大量数据时出错,该怎么处理

C++访问Access数据库,在更新大量数据时出错
用C++通过ado访问access数据库
当记录比较多,比如说几万条时,update语句出错
程序如下:
m_pRecordset-> Open( "select   *   from   table1 ",   m_pConnect.GetInterfacePtr(),   adOpenDynamic,   adLockOptimistic,   adCmdText);
while(!m_pRecordset-> adoEOF)
{
        m_pRecordset-> PutCollect( "field1 ",   _variant_T(false));
        m_pRecordset-> Update();
        m_pRecordset-> MoveNext();
}
程序总在第10000条左右出错,出错语句是
        m_pRecordset-> Update();
抛出异常
只有在更新大量数据时才出错,几千条一般没事

------解决方案--------------------
表有主键吗?
------解决方案--------------------
应该是表上索引影响的,因为更新时要根据索引重新排列存储。所有数据量很大时,应该是超时出错,建议改变索引
------解决方案--------------------
使用 UpdateBatch 批量更新试试看,

用法是在 while 语句完成后,调用 UpdateBatch 即可。
------解决方案--------------------
或者直接用Update语句,_CommandPtr
------解决方案--------------------
是的,如果更新内容一样的话,直接用 SQL 中的 UPDATE 更快。
------解决方案--------------------
_ConnectPtr-> SetCommandTimeouts = 0; //执行命令不设置超时时间
//正确的写法是什么忘了。大概的意思。

------解决方案--------------------
设成0,ms
------解决方案--------------------
哦,那我就不知道了。
------解决方案--------------------
帮你顶