我正在将一个XML文件读入到DataSet中,并需要从DataSet中获取数据。由于它是一个可编辑的配置文件,字段可能存在或不存在。为了很好地处理缺失字段,我想确保DataRow中的每个列都存在且不是DBNull。
我已经检查了DBNull,但我不知道如何确保该列存在而不使其抛出异常或使用循环所有列名的函数。最佳方法是什么?
DataRow的好处在于它们与其基础表格相链接。通过这个基础表格,您可以验证特定行是否具有特定列。
If DataRow.Table.Columns.Contains("column") Then
MsgBox("YAY")
End If
您可以使用DataSet.Tables(0).Columns.Contains(name)
来检查DataTable
是否包含特定名称的列。
另一种查找列是否存在的方法是通过检查Columns
集合索引器传递列名时返回的值Nothing
:
If dataRow.Table.Columns("ColumnName") IsNot Nothing Then
MsgBox("YAY")
End If
相比使用Contains("ColumnName")
方法的方法,此方法可能更受欢迎,尤其是当后续代码需要获取该DataColumn
进行进一步使用时。例如,您可能想知道哪种类型在列中存储了一个值:
Dim column = DataRow.Table.Columns("ColumnName")
If column IsNot Nothing Then
Dim type = column.DataType
End If
Contains("ColumnName")
的情况下使您的代码更加简洁。