Я пытаюсь использовать 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
,
Могу ли я знать, что я не прав?
Спасибо заранее.
RecourdCount
свойство работает только в том случае, если базовый поставщик или тип курсора действительно его поддерживают, в противном случае возвращается -1.
Попробуйте использовать статический курсор ADODB::adOpenStatic
вместо ADODB::adOpenUnspecified
)
Также обратите внимание, что даже когда поставщик поддерживает это, получение количества записей может использовать много ресурсов, поскольку поставщик должен извлечь все записи, прежде чем узнает количество записей, затронутых запросом.
Обратитесь к этому MSDN страница для подробной документации.
Других решений пока нет …