2013-08-22 1 views
1

Я пытаюсь использовать ADO для выполнения некоторых запросов на C++. Вот мой кодADODB :: _ RecordsetPtr :: Ошибка GetRecordCount()

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.