gpt4 book ai didi

c++ - 使用 C++ 将多条记录添加到 ADO 记录集的最快方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:34 25 4
gpt4 key购买 nike

我们有一个数据模型支持托管在多个服务器上的单表数据库。然而,我们有时需要从多个表中编译数据以显示在经典的 ASP 页面上。这是在 C++ 的 COM 对象中完成的。我们使用 OleDb 从 SQL Server 收集数据,OleDb 逻辑将数据直接写入 C++ 结构。然后我们循环遍历结构数组,将数据添加到 SafeArrays,然后将这些添加到记录集中。将数据添加到记录集的逻辑大致如下所示(省略了初始化和错误处理逻辑):

SAFEARRAY* fields; // Initialised to integer array 0 -> max fields
SAFEARRAY* values;
VARIANT* arraydata;

... // initialisation logic

SafeArrayAccessData(values, reinterpret_cast<void**>(&arrayData));

for(unsigned int i = 0; i < numDataValues1; ++i)
{
// Add data
arraydata[0].intVal = data[i].someValue;
... // etc.

for(unsigned int j = 0; j < numDataValues2; ++j)
{
arraydata[21].intVal = data2[j].someValue;
... // etc.

_recordset->raw_AddNew(fields, values);
_recordset->Update();
}
}

但是速度相对较慢。添加 1000 行数据可能需要一秒钟,这在我们的环境中太长了。如果我注释掉对 raw_AddNew 和 Update 的调用,逻辑就会飞起来。所以问题在于我如何将数据添加到记录集中。非常感谢任何建议或建议。非常感谢。

最佳答案

我已经很长时间没有编写 ADO 数据库连接代码了,但如果我没记错的话,您需要将锁定更改为 adLockBatchOptimistic,然后进行批量更新。这样会快得多。

This might help you

如果我没记错的话,它仍然很慢。

关于c++ - 使用 C++ 将多条记录添加到 ADO 记录集的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com