我正在將XML文件讀入DataSet中,並且需要從DataSet中獲取數據。由於它是一個用戶可編輯的配置文件,這些字段可能會或可能不在。爲了處理缺失的字段,我想確保DataRow中的每一列都存在,而不是DBNull。如何找出列中是否存在VB.Net DataRow
我已經檢查過DBNull,但我不知道如何確保列存在,而不會引發異常或使用循環遍歷所有列名的函數。什麼是最好的方法來做到這一點?
我正在將XML文件讀入DataSet中,並且需要從DataSet中獲取數據。由於它是一個用戶可編輯的配置文件,這些字段可能會或可能不在。爲了處理缺失的字段,我想確保DataRow中的每一列都存在,而不是DBNull。如何找出列中是否存在VB.Net DataRow
我已經檢查過DBNull,但我不知道如何確保列存在,而不會引發異常或使用循環遍歷所有列名的函數。什麼是最好的方法來做到這一點?
DataRow的很好,他們有他們的基礎表連接到他們的方式。通過底層表,您可以驗證特定行中是否有特定列。
If DataRow.Table.Columns.Contains("column") Then
MsgBox("YAY")
End If
您可以用try ... catch語句封裝您的代碼塊,並且當您運行代碼時,如果該列不存在,則會引發異常。然後你可以找出它引發了什麼特定的異常,並且如果你願意,以不同的方式處理那個特定的異常,例如返回「找不到列」。
您可以使用DataSet.Tables(0).Columns.Contains(name)
來檢查DataTable
是否包含具有特定名稱的列。
另一種方法來找出一個列上存在是檢查Nothing
通過列名,就當從Columns
集合索引返回值:
If dataRow.Table.Columns("ColumnName") IsNot Nothing Then
MsgBox("YAY")
End If
這種方法可能會優於當以下代碼隨後需要獲得DataColumn
以供進一步使用時,該方法使用Contains("ColumnName")
方法。例如,你可能想知道哪種類型的具有存儲在列中的值:
Dim column = DataRow.Table.Columns("ColumnName")
If column IsNot Nothing Then
Dim type = column.DataType
End If
在這種情況下這種做法可以節省您的Contains("ColumnName")
一個電話在同一時間,使你的代碼有點清潔。
無需訴諸try ... catch塊,檢查錯誤總是一個更好的主意;它應該只能用作最後的手段。 – 2010-02-22 09:05:42