欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

更新大量数据时出错,程序应该怎样改解决思路

更新时间: 2014-01-05 02:26:06 责任编辑: Author_N1

 

更新大量数据时出错,程序应该怎样改
用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();
抛出异常

--参考方法--
可能是申请的内存块或缓冲区太小了。
--参考方法--
请到C++版块去问吧,用UPDATE SQL语句试试。
--参考方法--
检查update
--参考方法--
这样试试:
m_pConnect.execute "update tablename set ... where ... "
--参考方法--
直接用UPDATE SQL语句
--参考方法--
循环数据集后,直接用update语句更新。

如:

循环每一条数据,针对每行记录都执行一次update:

update 表名 set 字段名 = 新值 where ...
--参考方法--
http://support.microsoft.com/kb/198633/zh-cn


在 Microsoft Access 2000, 您可以利用的功能, 可用于增加 MaxLocksPerFile 设置针对 MicrosoftJet 数据库引擎 4.0 编辑 Windows 注册表。 对此设置默认值是 9500。 但是, 因为每个连接该服务器的最大记录锁定是 10000 更改该值建议不要如果 Novell Netware 服务器, 之一副本位于。如果两副本是位于运行 Microsoft Windows NT 4.0 或 Microsoft Windows 95 服务器上或以后, 只受可用资源是限制最大值的设置。

警告 : 如果注册表编辑器使用不当, 可能会造成严重问题, 可能需要重新安装操作系统。 Microsoft 无法保证您能解决因注册表编辑器使用不当而导致问题。 需要您自担风险使用注册表编辑器。
1. 退出 MicrosoftAccess。
2. 依次单击 开始 运行 。
3. 在 打开 框中, 键入 regedit 。
4. 找到 HKEY _ LOCAL _ MACHINE 注册表文件夹。
5. 展开 HKEY _ LOCAL _ 直到您找到 SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0 文件夹。
6. 单击 Jet 4.0 文件夹以查看其内容。
7. 选择 MaxLocksPerFile 项 ; 在 编辑 菜单上, 单击 修改 。
8. 在 编辑 DWORD 值 对话框中, 选择 Decimal 并增加 数值数据 框中数值。
9. 单击 确定 以保存 MaxLocksPerFile 设置。
10. 退出注册表编辑器。
11. 启动 MicrosoftAccess 并同步副本。
--参考方法--
循环数据集后,直接用update语句更新。

如:

循环每一条数据,针对每行记录都执行一次update:

update 表名 set 字段名 = 新值 where ...
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:26:06
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9779/
本文WWW.DOC100.NET DOC100.NET版权所有。