共用方式為


HelloData 的評論

HelloData 應用程式會逐步執行一般 ADO 應用程式的基本作業:取得、檢查、編輯和更新數據。 當您啟動應用程式後,請按下第一個按鈕,取得資料。 這會執行 GetData 子程式。

取得資料

GetData 會將有效的連接字串放入模組層級變數中,m_sConnStr。 如需連接字串的詳細資訊,請參閱 建立連接字串

使用 Visual Basic OnError 語句指派錯誤處理程式。 如需 ADO 中錯誤處理的詳細資訊,請參閱 錯誤處理。 會建立新的 Connection 物件,並將 CursorLocation 屬性設定為 adUseClient,因為 HelloData 範例會建立 離線的 Recordset。 這表示,一旦從資料來源擷取到資料,與資料來源的實體連線就會被中斷,但您仍然可以使用存在本機快取中的資料,Recordset 物件。

開啟連線之後,請將 SQL 字串指派給變數 (sSQL)。 然後,建立新 Recordset 對象的實例,m_oRecordset1。 在下一行程式代碼中,透過現有的 Connection開啟 Recordset ,傳入 sSQL 做為 Recordset的來源。 您可以協助 ADO 判斷您傳遞作為 Recordset 來源的 SQL 字串是否為命令的文字定義,方法是在 Recordset Open 方法的最後一個引數中傳遞 adCmdText。 這一行也會設定與 Recordset相關聯的 LockTypeCursorType

下一行程式代碼會將 MarshalOptions 屬性設定為等於 adMarshalModifiedOnlyMarshalOptions 指出哪些記錄應該編組至中間層(或網頁伺服器)。 如需封送處理的詳細資訊,請參閱 COM 文件。 當您使用 adMarshalModifiedOnly 搭配客戶端游標(CursorLocation = adUseClient)時,只有在客戶端上已修改的記錄會被寫回到中間層。 將 MarshalOptions 設定為 adMarshalModifiedOnly 可以改善效能,因為封送處理的資料列較少。

接下來,將其 ActiveConnection 屬性設為 Nothing,以中斷 Recordset 的連線。 如需更多資訊,請參閱 中的「中斷和重新連接記錄集」一節,資料更新和保存

關閉與數據源的連接,並終結現有的 Connection 物件。 這會釋放其取用的資源。

最後一個步驟是將 Recordset 設定為窗體上 Microsoft DataGrid 控件的 DataSource,以便您可以輕鬆地在窗體上顯示 Recordset 中的數據。

點選第二個按鈕,[檢查資料]。 這會執行 ExamineData 子程式。

檢查數據

ExamineData 會使用 Recordset 對象的各種方法和屬性來顯示 recordset 中數據的相關信息。 它會使用 RecordCount 屬性來報告記錄數目。 它會迴圈遍歷 Recordset,並在表單上的顯示文字框中顯示 AbsolutePosition 屬性的值。 此外,在迴圈中,第三筆記錄的 Bookmark 屬性值會放入變數變數中,vBookmark,以供日後使用。

例程會使用先前儲存的書籤變數,直接巡覽回第三筆記錄。 例程會呼叫 WalkFields 子程式,其會遍歷 RecordsetFields 集合,並顯示集合中每個 Field 的詳細資訊。

最後,CheckData 會使用 RecordsetFilter 属性,只篩選 CategoryId 等於 2 的記錄。 套用此篩選的結果會在表單上的顯示方格中立即顯示。

如需 ExamineData 子程式中顯示的功能詳細資訊,請參閱 檢查資料

接下來,按下第三個按鈕,編輯資料。 這會執行 EditData 子程式。

EditData

當程式進入 EditData 子程式時,Recordset 仍會篩選 CategoryId 等於 2,因此只會顯示符合篩選條件的項目。 它首先會遍歷 Recordset,並在 Recordset 中將每個可見項目的價格提高 10%。 Price 欄位的值會變更,方法是設定該欄位的 Value 屬性等於新的有效金額。

請記住,Recordset 與數據源中斷連線。 EditData 中所做的變更只會對本機快取的數據複本進行。 如需詳細資訊,請參閱 編輯資料

除非您按下第四個按鈕,[更新數據],否則不會對數據源進行變更。 這會執行 UpdateData 子程式。

更新數據

UpdateData 會先移除已套用至 Recordset的篩選條件。 程式碼會移除並重設 m_oRecordset1 作為窗體上 Microsoft 系結 DataGrid 的 DataSource,讓未經篩選的 Recordset 出現在資料格中。

然後,程式代碼會檢查您是否可以使用 Supports 方法和 adMovePrevious 參數,在 Recordset 中向前移動。

例程會使用 MoveFirst 方法移至第一筆記錄,並使用 OriginalValueValueField 物件的屬性來顯示字段的原始和目前值。 這些屬性以及(未在此使用的)UnderlyingValue 屬性在 更新和持久化資料中進行討論。

接下來,會建立新的 Connection 物件,並用來重新建立與數據源的連接。 您將 Recordset 重新連線至資料來源,方法是將新的 Connection 設定為 RecordsetActiveConnection。 若要將更新傳送至伺服器,程式代碼會在 Recordset上呼叫 UpdateBatch

如果批次更新成功,模組層級旗標變數 m_flgPriceUpdated會設定為 True。 這稍後會提醒您清除對資料庫所做的所有變更。

最後,程式代碼會回到 Recordset 中的第一筆記錄,並顯示原始和目前的值。 呼叫 updateBatch之後,這些值會相同。

如需如何更新資料的詳細資訊,包括當您的 Recordset 中斷連線時,伺服器上的數據變更時該怎麼做,請參閱 更新和保存資料

表單_卸載

Form_Unload 子程式很重要,原因有數個。 首先,因為這是範例應用程式,Form_Unload清除應用程式結束時對資料庫所做的變更。 其次,程式代碼會示範如何使用 Execute 方法,直接從開啟 Connection 物件執行命令。 最後,它會顯示針對數據源執行非數據列傳回查詢(UPDATE 查詢)的範例。