首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

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

2012-02-17 
更新大量数据时出错,程序应该怎样改用C++通过ado访问access数据库当记录比较多,比如说几万条时,update语句

更新大量数据时出错,程序应该怎样改
用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 ...

热点排行