Share via


驗證資料集中的資料

資料驗證是一項確認輸入資料物件的值是否符合資料集結構描述中的條件約束,以及為應用程式所建立之規則的程序。 先驗證資料再將更新傳送至基礎資料庫是良好的作法,因為這樣不但會減少錯誤,也會減少應用程式與資料庫之間的可能來回往返次數。 您可以在資料集本身中建置驗證檢查來確認寫入資料集的資料是否有效。 資料集可檢查各種方式更新的資料,無論是直接由表單中的控制項更新、在元件內更新或是其他方式。 由於資料集是屬於您應用程式的一部分,因此在邏輯上很適合建立特定應用程式的驗證 (與在資料庫後端中建置相同的檢查並不一樣)。

將驗證加入應用程式的建議位置是,資料集的部分類別檔。 在 Visual Basic 或 Visual C# 中,開啟 [DataSet 設計工具],然後按兩下您要建立驗證的資料行或資料表。 這個動作會自動建立 ColumnChangingRowChanging 事件處理常式。 如需詳細資訊,請參閱 HOW TO:在資料行變更期間驗證資料HOW TO:在資料列變更期間驗證資料。 如需完整的範例,請參閱逐步解說:加入驗證至資料集

驗證資料

資料集內的驗證可依下列方式進行:

當資料錄中發生變更時,DataTable 物件會引發數個事件:

根據預設,每次變更資料行都會引發四個事件:首先是為變更的特定資料行引發 ColumnChangingColumnChanged 事件,接著是 RowChangingRowChanged 事件。 如果資料列有多處變更,則每次變更都會引發事件。

注意事項注意事項

每次個別資料行變更後,資料列的 BeginEdit 方法會關閉 RowChangingRowChanged 事件。 在這種情況下,當只引發 RowChangingRowChanged 事件一次時,這些事件會等到呼叫 EndEdit 方法之後才會被引發。 如需詳細資訊,請參閱 HOW TO:填入 DataSet 時關閉條件約束

您選擇哪些事件會因您要驗證的程度而定。 所以,如果您需要在資料行一變更時就能攔截錯誤,請務必使用 ColumnChanging 事件來建置驗證。 否則請使用 RowChanging 事件,這樣可能一次會攔截幾個錯誤。 此外,如果資料的結構方式是資料行的值會根據其他資料行的內容來驗證,那麼您應該在 RowChanging 事件期間執行驗證。

當更新資料錄時,DataTable 物件在變更發生時和變更之後會引發事件來讓您回應。

如果您的應用程式使用具型別資料集,則您可以建立強型別 (Strongly Typed) 事件處理常式。 這將會加入四個額外具型別事件,讓您可以建立其處理常式:dataTableNameRowChanging、dataTableNameRowChanged、dataTableNameRowDeleting 和 dataTableNameRowDeleted。 這些具型別事件處理常式會傳遞引數,其中包含您資料表的資料行名稱,使得程式碼讀寫更為容易。

資料更新事件

事件

說明

ColumnChanging

正在變更資料行中的值。 這個事件會將資料列、資料行以及建議新值傳遞給您。

ColumnChanged

已變更資料行中的值。 這個事件會將資料列、資料行以及建議值傳遞給您。

RowChanging

資料集將認可 DataRow 物件的變更。 如果您並未呼叫 BeginEdit 方法,則在引發 ColumnChanging 事件之後,就會緊接為資料行的每項變更引發 RowChanging 事件。 如果您在變更之前呼叫 BeginEdit,則只會在您呼叫 EndEdit 方法時引發事件 RowChanging

這個事件會將資料列傳遞給您,並且傳遞值來指示執行的動作類型 (變更、插入等)。

RowChanged

已變更資料列。 這個事件會將資料列傳遞給您,並且傳遞值來指示執行的動作類型 (變更、插入等)。

RowDeleting

正在刪除資料列。 這個事件會將資料列傳遞給您,並且傳遞值來指示執行的動作類型 (刪除)。

RowDeleted

已刪除資料列。 這個事件會將資料列傳遞給您,並且傳遞值來指示執行的動作類型 (刪除)。

ColumnChangingRowChangingRowDeleting 事件是在更新程序期間引發的。 您可使用這些事件來驗證資料或是執行其他類型的處理。 由於在這些事件發生期間正在執行更新,因此您可擲回例外狀況來取消更新,讓變更無法完成。

ColumnChangedRowChangedRowDeleted 事件則是當更新成功完成時引發的告知事件。 當您要依據成功更新來採取進一步動作時,這些事件是相當有用的。

請參閱

工作

HOW TO:連接至資料庫中的資料

HOW TO:驗證 Windows Form DataGridView 控制項中的資料

HOW TO:使用 Windows Form ErrorProvider 元件顯示表單驗證的錯誤圖示

概念

DataSet 設計工具