CRecordset類

域數據成員:

該類的數據成員又被稱爲字段數據成員或域數據成員。域數據成員用來保存某條記錄的各個字段,它們是程序與記錄之間的緩衝區.域數據成員代表當前記錄,當在記錄集中滾動到某一記錄時,框架自動地把記錄的各個字段拷貝到記錄集對象的域數據成員中.當用戶要修改當前記錄或增加新記錄時,程序先將各字段的新值放入域數據成員中,然後調用相應的CRecordset成員函數把域數據成員設置到數據源中.

記錄集和數據源之間的數據交換:

在記錄集與數據源之間有一個數據交換問題.CRecordset類使用"記錄域交換"(Record Field Exchange,縮寫爲RFX)機制自動地在域數據成員和數據源之間交換數據.RFX機制與對話數據交換(DDX)類似.CRecordset的成員函數DoFieldExchange負責數據交換任務,在該函數中調用了一系列RFX函數.當用戶用ClassWizard加入域數據成員時,ClassWizard會自動在DoFieldExchange中建立RFX.

SQL查詢:

記錄集的建立實際上主要是一個查詢過程,SQL的SELECT語句用來查詢數據源.在建立記錄集時,CRecordset會根據一些參數構造一個SELECT語句來查詢數據源,並用查詢的結果創建記錄集.明白這一點對理解CRecordset至關重要.SELECT語句的句法如下:

SELECT rfx-field-list FROM table-name [WHERE m_strFilter]

[ORDER BY m_strSort]

  其中table-name是表名,rfx-field-list是選擇的列(字段).WHERE和ORDER BY是兩個子句,分別用來過濾和排序。下面是SELECT語句的一些例子:

SELECT CourseID, InstructorID FROM Section

SELECT * FROM Section WHERE CourseID=‘MATH202’ AND Capacity=15

SELECT InstructorID FROM Section ORDER BY CourseID ASC

  其中第一個語句從Section表中選擇CourseID和InstructorID字段.第二個語句從Section表中選擇CourseID爲MATH202且Capacity等於15的記錄,在該語句中使用了象"AND"或"OR"這樣的邏輯連接符.要注意在SQL語句中引用字符串、日期或時間等類型的數據時要用單引號括起來,而數值型數據則不用.第三個語句從Section表中選擇InstructorID列並且按CourseID的升序排列,若要降序排列,可使用關鍵字DESC.

提示:如果列名或表名中包含有空格,則必需用方括號把該名稱包起來。例如,如果有一列名爲“Client Name”,則應該寫成“[Client Name]”。

 

CRecordset類有兩個公共數據成員m_strFilter和m_strSort用來設置對記錄的過濾和排序.在調用Open或Requery前,如果在這兩個數據成員中指定了過濾或排序,那麼Open和Requery將按這兩個數據成員指定的過濾和排序來查詢數據源.

 

事實上,Open函數在構造SELECT語句時,會把m_strFilter和m_strSort的內容放入SELECT語句的WHERE和ORDER BY子句中.如果在Open的lpszSQL參數中已包括了WHERE和ORDER BY子句,那麼m_strFilter和m_strSort必需爲空.

 

調用無參數成員函數Close可以關閉記錄集.在調用了Close函數後,程序可以再次調用Open建立新的記錄集.CRecordset的析構函數會調用Close函數,所以當刪除CRecordset對象時記錄集也隨之關閉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章