sql — ADODB :: _ RecordsetPtr :: Open создает исключение, например, истекло время ожидания запроса в переполнении стека

здесь я пытаюсь запросить таблицу SQL Server 2008 R2 из моего приложения C ++. Содержит 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. это было бы полезно для меня. Заранее спасибо.

1

Решение

В соответствии с Кодирование Путешествие вам нужно установить 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;
2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector