CRecordset::EDIT

此成員函式用來支持對當前記錄的修改。當應用程式調用Edit之後,就可以通過直接重新設定欄位數據成員的值來改變它們。當後來應用程式重新調用Update成員函式來將這些改變保存到數據源上時,這次操作才算完成。

基本介紹

  • 外文名:CRecordset::EDIT
  • 性質:科學
  • 類別:計算機學
  • 屬於:編程
CRecordset::Edit
virtual void Edit();
throw( CDBException, CMemoryException );
注意:
如果你已經實現了成組行讀取,你就不能調用Edit。這將導致一個失敗斷言。雖然類CRecordset不提供用於更新成組數據行的機制,但是你可以使用ODBC API函式SQLSetPos來編寫你自己的函式。有關如何做到這一點的例子,請參見DBEFETCH示例。
Edit保存記錄集數據成員的值。如果你調用了Edit,進行了改變,然後再調用Edit,則記錄的值被恢復到第一次調用Edit之前的值。
在某些情況下,你可能會想通過將一個列置為Null來更新它。要實現這一點,可以使用TRUE為參數調用SetFieldNull函式,來標記此欄位為Null;這樣也使此欄位表列被更新。如果你想要將某一欄位寫入數據源,即使是它的值沒有改變,則可以使用TRUE為參數調用SetFieldDirty函式。即使此欄位的值為Null,這也同樣可行。
如果數據源支持事務,則應用程式可以讓Edit成為事務的一部分。值得注意的是,你應當在調用Edit之前,但在打開記錄集之後,調用CDatabase::BeginTrans函式。還要注意,調用CDatabase::CommitTrans並不能代替調用Update來完成Edit操作。要獲取有關事務的更多信息,請參見CDatabase類。
根據當前的加鎖方式,正被更新的記錄可能被Edit加鎖,直到應用程式調用Update或滾動到另一個記錄;也可能它只在Edit調用期間被加鎖。你可以利用SetLocking Mode來改變加鎖方式。
如果應用程式在調用Update之前滾動到了一個新的記錄,則恢復當前記錄的先前值。如果對一個不可修改的記錄集調用Edit,或沒有當前記錄,則將拋出一個CDBException異常。
示例:
// CRecordset::Edit的示例:
// 編輯一個記錄
// 首先設定編輯快取
// rsCustSet.Edit();
// 然後編輯記錄的欄位數據成員
rsCustSet.m_dwCustID = 2795;
rsCustSet.m_strCustomer = "ones Mfg";
// 最後,完成此操作
if ( !rsCustSet.Update() )
// 處理更新失敗

相關詞條

熱門詞條

聯絡我們