關於ADO記錄集GetRecordCount()返回記錄條數-1的問題,adogetrecordcount

來源:互聯網
上載者:User

關於ADO記錄集GetRecordCount()返回記錄條數-1的問題,adogetrecordcount
ADO方式操作資料庫我們通常使用GetRecordCount函數來快速判斷一個開啟的記錄集裡面總共有多少條記錄,但在使用中有時卻發現有時可能查不到任何的資料,跟蹤發現GetRecordCount()返回值變成了-1,而且記錄集裡也有記錄存在。 
一般情況下當ADO不能確定記錄條數,或者串連提供者、遊標類型都不支援RecordCount的時候,RecordCount屬性都將返回-1。
最常用的兩個遊標類型是: 
adUseClient 
使用由本地遊標庫提供的用戶端資料指標。本地遊標引擎通常允許使用的許多功能可能是驅動程式提供的遊標無法使用的,因此使用該設定對於那些將要啟用的功能是有好處的。adUseClientBatch與 adUseClient同義,也支援向後相容性。 
adUseServer 
預設值。使用資料提供者或驅動程式提供的遊標。這些遊標有時非常靈活,對於其他使用者對資料來源所作的更改具有額外的敏感性。但是,Microsoft Client Cursor Provider(如已斷開關聯的記錄集)的某些功能無法由伺服器端遊標類比,通過該設定將無法使用這些功能。 
這是MSDN上的解釋,補充說明:使用adUseClient就是表示資料需要傳輸到用戶端後再進行操作,不具有同步。它能更好的支援RecordCount屬性,這樣對效能的影響比較大,如果資料很多會更明顯。adUseServer是直接在資料庫中操作,處理的速度比較快。在其他的很多方面adUesServer很有限制。 

如何正確使用RecordCount屬性,我們只需在使用時設定好遊標(靜態/客戶): 
在m_pSet->Open()前加上: 
m_pSet->CursorType = adOpenStatic; 
m_pSet->CursorLocation = adUseClient;

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.