Как узнать, существует ли столбец в VB.Net DataRow
Вопрос
Я читаю 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
столбец с конкретным именем.
Другой способ выяснить, существует ли столбец, - проверить значение 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 ")
, делая ваш код немного чище.
Вы можете инкапсулировать свой блок кода с помощью оператора try ... catch, и когда вы запустите свой код, если столбец не существует, он выдаст исключение. Затем вы можете выяснить, какое конкретное исключение оно выдает, и по своему желанию обработать это конкретное исключение, например, возвращая " Column Not Found ".