首页 文章

如何确定VB.Net DataRow中是否存在列

提问于
浏览
50

我正在将XML文件读入DataSet,需要从DataSet中获取数据 . 由于它是用户可编辑的配置文件,因此字段可能存在也可能不存在 . 为了更好地处理缺少的字段,我想确保DataRow中的每一列都存在且不是DBNull .

我已经检查了DBNull但是我不知道如何确保列存在而不会抛出异常或使用循环遍历所有列名的函数 . 这样做的最佳方法是什么?

4 回答

  • 151

    DataRow的表现非常好,因为它们将基础表链接到它们 . 使用基础表,您可以验证特定行中是否包含特定列 .

    If DataRow.Table.Columns.Contains("column") Then
            MsgBox("YAY")
        End If
    
  • -3

    您可以使用 DataSet.Tables(0).Columns.Contains(name) 来检查 DataTable 是否包含具有特定名称的列 .

  • 2

    查明列是否存在的另一种方法是检查 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") 的调用,同时使您的代码更清晰 .

  • 17

    您可以使用try ... catch语句封装代码块,并且在运行代码时,如果该列不存在,则会引发异常 . 然后,您可以找出它抛出的特定异常,并在需要时以不同的方式处理该特定异常,例如返回“Column Not Found” .

相关问题