Подтвердить что ты не робот

Как узнать, существует ли столбец в VB.Net DataRow

Я читаю XML файл в DataSet и должен получить данные из DataSet. Поскольку это настраиваемый пользователем конфигурационный файл, поля могут быть или не быть. Хорошо обрабатывать недостающие поля, я хотел бы убедиться, что каждый столбец в DataRow существует и не является DBNull.

Я уже проверяю DBNull, но я не знаю, как убедиться, что столбец существует, не вызывая исключения или используя функцию, которая пересекает все имена столбцов. Каков наилучший способ сделать это?

4b9b3361

Ответ 1

DataRow хорош в том, что у них есть связанная с ними базовая таблица. В базовой таблице вы можете убедиться, что определенная строка имеет в ней определенный столбец.

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

Ответ 2

Вы можете использовать DataSet.Tables(0).Columns.Contains(name), чтобы проверить, содержит ли DataTable столбец с определенным именем.

Ответ 3

Еще один способ узнать, существует ли столбец, - проверить 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

В этом случае этот подход экономит вам вызов Contains("ColumnName"), в то же время делая ваш код немного более чистым.

Ответ 4

Вы можете инкапсулировать свой блок кода с помощью инструкции try... catch, и когда вы запустите свой код, если столбец не существует, он будет генерировать исключение. Затем вы можете выяснить, какое конкретное исключение оно выбрасывает, и заставить обработать это конкретное исключение по-другому, если вы этого захотите, например, вернуть "Столбец не найден".