gpt4 book ai didi

c++ - ADODB::_RecordsetPtr::Open 在 C++ 中抛出类似查询超时的异常

转载 作者:行者123 更新时间:2023-11-30 04:03:20 26 4
gpt4 key购买 nike

我在这里尝试从我的 C++ 应用程序查询 sql server 2008 r2 表。它包含 21,54,514。但它会抛出类似“查询超时已过期”的异常。下面是我的代码库

ADODB::_ConnectionPtr           m_pDBConnection;
ADODB::_RecordsetPtr m_pRS;

m_pDBConnection.CreateInstance("ADODB.Connection");
m_pRS.CreateInstance("ADODB.RecordSet");

m_pRS->Open(wstrSQL.c_str(), _variant_t((IDispatch *) m_pDBConnection, true),
ADODB::adOpenStatic,
ADODB::adLockReadOnly,
ADODB::adCmdText);

当上面的行被执行时,它会抛出上面所说的异常。

我知道这个问题,问题实际上是默认超时设置。实际上是 15 秒。

谁能告诉我如何在 ADODB::_RecordsetPtr 中重置或更改超时。我在谷歌搜索了很多,我们可以为 ADODB::_ConnectionPtr 重置超时,但不能为 ADODB::_RecordsetPtr 重置超时。这对我来说很有用。提前致谢。

最佳答案

根据 Coding Journey你需要设置 CommandTimeout在连接上在命令上。

// The recordset for the result
ADODB::_RecordsetPtr rs;
// Timeout on connection
m_pDBConnection->CommandTimeout = 60;
// Need to create command first, then configure it, then open RecordSet
ADODB::_CommandPtr cmd(__uuidof(ADODB::Command));
cmd->ActiveConnection = m_pDBConnection;
cmd->CommandText = wstrSQL.c_str();
cmd->CommandTimeout = 60;
rs->Open(cmd, vtMissing, ADODB::adOpenStatic, ADODB::adLockReadOnly, ADODB::adCmdText);
// Reset the timeout on the connection
m_pDBConnection->CommandTimeout = 15;

关于c++ - ADODB::_RecordsetPtr::Open 在 C++ 中抛出类似查询超时的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508564/

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