Question

Je lis un fichier XML dans un DataSet et ai besoin d'extraire les données du DataSet. Puisqu'il s'agit d'un fichier de configuration éditable par l'utilisateur, les champs peuvent être ou ne pas être là. Pour bien gérer les champs manquants, je voudrais m'assurer que chaque colonne du DataRow existe et n'est pas DBNull.

Je recherche déjà DBNull mais je ne sais pas comment m'assurer que la colonne existe sans qu'elle ait à lever une exception ou à utiliser une fonction qui passe en boucle sur tous les noms de colonne. Quelle est la meilleure méthode pour le faire?

Était-ce utile?

La solution

Les DataRow ont la gentillesse d’avoir leur table sous-jacente qui leur est liée. Avec la table sous-jacente, vous pouvez vérifier qu’une ligne spécifique contient une colonne spécifique.

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

Autres conseils

Vous pouvez utiliser DataSet.Tables (0) .Columns.Contains (name) pour vérifier si le DataTable contient une colonne portant un nom particulier.

Une autre façon de savoir s’il existe une colonne consiste à vérifier Nothing la valeur renvoyée par l’indexeur de la collection Columns lors de la transmission du nom de la colonne:

If dataRow.Table.Columns("ColumnName") IsNot Nothing Then
    MsgBox("YAY")
End If

Cette approche peut être préférée à celle qui utilise la méthode Contains (" ColumnName ") lorsque le code suivant devra ensuite obtenir ce code DataColumn pour une utilisation ultérieure. . Par exemple, vous voudrez peut-être 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 enregistre un appel au contient (" nom_colonne ") en même temps, ce qui rend votre code un peu plus propre.

Vous pouvez encapsuler votre bloc de code avec une instruction try ... catch. Lorsque vous exécutez votre code, si la colonne n'existe pas, une exception est générée. Vous pouvez ensuite déterminer quelle exception elle est générée et lui demander de gérer cette exception de manière différente si vous le souhaitez, telle que le renvoi de "Column Not Found".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top