2013-08-22 40 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頁面。