本文摘自:https://blog.csdn.net/hfchenle/article/details/51832973
在ADO程序中,記錄集(Recordset)對象代表一個表的記錄集合或者是一個SQL命令或存儲過程執行結果。簡單地說:記錄集實際上緩存了從數據庫獲得的記錄,應用程序可以從記錄集中獲得每條記錄的字段。
Recordset對象的常用屬性和方法:
RecordCount屬性:返回Recordset對象中記錄的當前數目
BOF,EOF屬性:BOF指示當前記錄位置的第一記錄的前一個,EOF指示當前記錄的最后一個記錄的后一個。如果打開沒有記錄的Recordset對象,則BOF,EOF都為true,如果打開的記錄集中包含記錄,則BOF,EOF都為false
AbsolutePosition屬性:指定Recordset對象當前記錄的序號位置
ActiveConnection屬性:該屬性指定Recordset當前所屬的Connection對象。
Open方法定義:
1 HRESULT Open (const _variant_t &Source, 2 const _variant_t &ActiveConnection, 3 enum CursorTypeEnum CursorType, 4 enum LockTypeEnum LockType, 5 long Options)
Source參數:為記錄源,它可以是下列內容之一:Command對象變量,SQL語句,存儲過程,表名或完整的路徑名。
ActiveConnection參數:對應於ActiveConnection屬性,指定在哪個連接中打開該記錄集
CursorType參數:指定打開Recordset時使用的游標
0(adOpenForwardOnly): 默認,前向游標。只能在Recordset的記錄中向前移動,但速度最快。
1(adOpenKeyset):鍵集游標,可以在Recordset中任意移動,其他用戶所做的記錄修改可見,但其他用戶添加的記錄不可見,刪除的記錄字段值不能被使用。
2(adOpenDynamic):動態游標,可以在Recordset中任意移動,其他用戶增、刪、改的記錄都可見,但速度最慢。
3(adOpenStatic):靜態游標,可以在Recordset中任意移動,其他用戶增、刪、改的記錄都不可見。
LockType參數:指定打開記錄集時應該使用的鎖定類型,它的取值為
0(adLockReadOnly):recordset的記錄為只讀
1(adLockPessimistic):只要保持Recordset為打開,別人就無法編輯該記錄集中的記錄.
2(adLockOptimistic):當update recordset中的記錄時,將記錄加鎖
3(adLockBatchOptimistic):以批模式時更新記錄時加鎖
Options參數:該參數類型為長整型值,指定source傳遞命令的類型
1(adCmdText):SQL語句
2(adCmdTable):數據表的名字
4(adCmdStoredProc):存儲過程
8(adCmdUnknown):未知類型
MoveFirst,MoveLast,MoveNext,MovePrevious方法:這些方法可以對記錄集的游標進行移動操作
GetCollect方法:用於取得字段的值,參數Index可以是字符串表明字段名,也可以是整型數,表示字段的序號。
_variant_t GetCollect(const _variant_t &Index);
PutColloct方法:用於向記錄字段中寫入值,pvar參數表示要寫入的變量值
void PutCollect (const _variant_t &Index,const _variant_t &pvar);
AddNew()方法:使用該方法創建和初始化新記錄,該方法可以使用參數,在參數中指定要添加的新紀錄,也可以不使用參數,而在后面使用PutCollect方法修改新記錄,使用Update函數保存新紀錄
Update()方法:該方法保存從調用AddNew方法以來或更改現有記錄中的任何字段值以來所做的所有更改。
使用記錄集的具體方法:
定義_RecordsetPtr型變量,然后通過它調用Recordset對象的Open方法,即可打開一個數據集,然后可以使用GetCollet方法獲取記錄的字段值,使用Move系列函數實現記錄集的遍歷,最后關閉記錄集。
使用集合Fields獲取字段值
_variant_t var=pRecordset->Fields->GetItem(long(0))->GetValue();