我正在将XML文件读入DataSet,需要从DataSet中获取数据。因为它是用户可编辑的配置文件,所以字段可能存在也可能不存在。为了更好地处理缺少的字段,我希望确保DataRow中的每一列都存在并且不是DBNull。
我已经检查了DBNull,但我不知道如何在不抛出异常或使用循环遍历所有列名的函数的情况下确保列存在。做这件事最好的方法是什么?
发布于 2008-10-07 14:39:44
DataRow的优秀之处在于它们的基础表链接到了它们。使用基础表,您可以验证特定行中是否包含特定列。
If DataRow.Table.Columns.Contains("column") Then
MsgBox("YAY")
End If
发布于 2008-10-07 14:37:47
您可以使用DataSet.Tables(0).Columns.Contains(name)
检查DataTable
是否包含具有特定名称的列。
发布于 2015-12-04 06:31:53
检查列是否存在的另一种方法是在将列名传递给Columns
集合索引器时,检查从该集合索引器返回的值是否为Nothing
:
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")
的调用,同时使您的代码更加简洁。
https://stackoverflow.com/questions/178712
复制相似问题