Ошибка ADODB :: _ RecordsetPtr :: GetRecordCount ()

Я пытаюсь использовать ADO для выполнения некоторых запросов в C ++. Вот мой код

string commandline = "SELECT * FROM My_Table";

ADODB::_RecordsetPtr pRS("ADODB.Recordset");

ADODB::_ConnectionPtr pConn("ADODB.Connection");

pRS->Open(commandline.c_str(), _variant_t((IDispatch *) pConn, true), ADODB::adOpenUnspecified,  ADODB::adLockUnspecified, ADODB::adCmdText);

cout<<pRS->GetRecordCount();

У меня 1000 записей в My_TableТаким образом, я ожидаю увидеть вывод 1000, Тем не менее, выход -1,

Могу ли я знать, что я не прав?

Спасибо заранее.

1

Решение

RecourdCount свойство работает только в том случае, если базовый поставщик или тип курсора действительно его поддерживают, в противном случае возвращается -1.

Попробуйте использовать статический курсор ADODB::adOpenStatic вместо ADODB::adOpenUnspecified)

Также обратите внимание, что даже когда поставщик поддерживает это, получение количества записей может использовать много ресурсов, поскольку поставщик должен извлечь все записи, прежде чем узнает количество записей, затронутых запросом.

Обратитесь к этому MSDN страница для подробной документации.

1

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

Других решений пока нет …

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