代码之家  ›  专栏  ›  技术社区  ›  Bryan Anderson

如何确定VB.NET数据行中是否存在列

  •  50
  • Bryan Anderson  · 技术社区  · 16 年前

    我正在将XML文件读取到数据集中,需要从数据集中获取数据。因为它是用户可编辑的配置文件,所以字段可能存在,也可能不存在。为了更好地处理丢失的字段,我想确保数据行中的每一列都存在,并且不是dbnull。

    我已经检查了dbnull,但我不知道如何在不引发异常或使用循环所有列名称的函数的情况下确保列存在。最好的方法是什么?

    4 回复  |  直到 6 年前
        1
  •  150
  •   John Chuckran    16 年前

    数据行的方式很好,因为它们的基础表与它们相链接。使用基础表,可以验证特定行中是否有特定列。

        If DataRow.Table.Columns.Contains("column") Then
            MsgBox("YAY")
        End If
    
        2
  •  17
  •   Matt user129975    12 年前

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

        3
  •  2
  •   Alexander Abakumov    8 年前

    另一种确定列是否存在的方法是检查 Nothing 从返回的值 Columns 将列名传递给集合索引器时:

    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
    

    在这种情况下,此方法将为您节省一个调用 包含(“columnname”) 同时使代码更清晰。

        4
  •  -3
  •   Anders    16 年前

    你可以用一次尝试来封装你的代码块…catch语句,当运行代码时,如果列不存在,它将引发异常。然后,您可以弄清楚它抛出了什么特定的异常,如果您愿意,可以让它以不同的方式处理该特定的异常,例如返回“column not found”。