Comment puis-je savoir si une colonne existe dans un VB.Net DataRow
je suis en train de lire un fichier XML dans un ensemble de données et je dois extraire les données de cet ensemble de données. Comme il s'agit d'un fichier de configuration éditable par l'utilisateur, les champs peuvent ou non être présents. Pour bien gérer les champs manquants, j'aimerais m'assurer que chaque colonne de la fenêtre de données existe et n'est pas DBNull.
je vérifie déjà la présence de DBNull mais je ne sais pas comment m'assurer que la colonne existe sans qu'elle ne lance une exception ou en utilisant une fonction qui boucle tous les noms de colonne. Qu'est-ce que l' la meilleure méthode pour faire cela?
4 réponses
Datarow's sont gentils dans la façon dont ils ont leur table sous-jacente liée à eux. Avec la table sous-jacente, vous pouvez vérifier qu'une ligne spécifique a une colonne spécifique.
If DataRow.Table.Columns.Contains("column") Then
MsgBox("YAY")
End If
Vous pouvez utiliser DataSet.Tables(0).Columns.Contains(name)
pour vérifier si le DataTable
contient une colonne avec un nom particulier.
une autre façon de savoir si une colonne existe est de vérifier pour Nothing
la valeur retournée de Columns
index de collection en lui passant le nom de la colonne:
If dataRow.Table.Columns("ColumnName") IsNot Nothing Then
MsgBox("YAY")
End If
cette approche pourrait être préférée à celle qui utilise la méthode Contains("ColumnName")
lorsque le code suivant devra par la suite obtenir ce DataColumn
pour une utilisation ultérieure. Par exemple, vous pouvez vouloir savoir quel type a une valeur stockée dans la colonne:
Dim column = DataRow.Table.Columns("ColumnName")
If column IsNot Nothing Then
Dim type = column.DataType
End If
dans ce cas, cette approche vous évite d'appeler le Contains("ColumnName")
tout en rendant votre code un peu plus propre.
Vous pouvez encapsuler votre bloc de code avec un essai ... catch statement, et quand vous exécutez votre code, si la colonne n'existe pas il lancera une exception. Vous pouvez alors comprendre quelle exception spécifique il jette et le faire gérer cette exception spécifique d'une manière différente si vous le souhaitez, comme le retour "colonne non trouvée".