éviter de vérifier DataRow.IsDBNull sur chaque colonne?
Mon code est 2x plus longtemps que ce serait si je pouvais régler automatiquement IsDBNull
à ""
ou tout simplement rouler sur elle sans erreur.
C'est mon code:
Dim conn As New SqlConnection
conn.ConnectionString = Module1.DBConn2
Dim sqlCommand = New SqlCommand("SELECT * FROM table", conn)
conn.Open()
Dim sqlDataset As DataSet = New DataSet()
Dim sqlDataAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
sqlDataAdapter.Fill(sqlDataset)
conn.Close()
For Each rs As DataRow In sqlDataset.Tables(0).Rows
If Not IsDBNull(rs("column")) Then
Response.Write(rs("column"))
Else
Response.Write("")
End If
Response.Write("some stuff to write")
If Not IsDBNull(rs("column2")) Then
Response.Write(rs("column2"))
Else
Response.Write("")
End If
Next
Dans ce cas, je voudrais juste type Response.Write(rs("column"))
au lieu de la If
déclaration, et si column
IsDBNull
alors en sortie une chaîne vide.
Comment puis-je faire cela?
Merci beaucoup d'avance!
OriginalL'auteur | 2013-01-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement utiliser
String.Join
et passerà la ligne.ItemArray
:Qui fonctionne depuis
DBNull.ToString
retourne une chaîne vide.Si vous voulez l'adresse de chaque colonne, vous pouvez utiliser le fortement typé
DataRowExtensions.Champ
méthode qui prend en charge nullable et retournull
/Nothing
pour la chaîne. Ensuite, vous pouvez utiliser lenull-coalescing operator
(??
en C#,If
en VB).Toutefois, notez que
String.Format
va convertirnull
/Nothing
à""
implicitement de toute façon, de sorte que leIf
est redondante et juste fyi.MSDN:
j'ai supprimé mon commentaire 😉
OriginalL'auteur Rango
Voici un one-liner:
ou faire une extension de la méthode:
puis l'appeler comme:
Bien que l'OP cherche vb.net cependant à l'aide de la si() fonction de travail (mais pas iif qu'il va lancer une exception référence nulle)
OriginalL'auteur D Stanley
Dataset Extensions vous donner une propre façon de faire et c'est également fortement typé. Le type doit correspondre au type de colonne dans la base de données. Si la colonne de base de données peut être null, puis d'utiliser un type nullable comme ci-dessous. Les valeurs null ne deviennent Rien pour le retour de type nullable.
OriginalL'auteur Ceres
Ceres réponse est probablement le meilleur étant donné qu'il permet d'éviter toute sorte de nulle tests, mais il est intéressant de noter que le 'I' de la fonction serait également fonctionner assez bien. Il est toujours d'aller faire le test pour les nuls, mais il est beaucoup plus compact que la façon dont il a été à l'origine de le faire. Quelque chose comme ceci devrait faire l'affaire:
Que ce qui est bien avec cela est que vous pouvez remplacer les "" par ce que vous voulez de sortie si la valeur est null ( un joli petit bonus supplémentaire. )
Voici quelques infos sur les 'I' fonction pour ceux qui ne savent pas ce que c'est:
http://msdn.microsoft.com/en-ca/library/27ydhh0d(v=vs. 71).aspx
Iif()
fait partie de laMicrosoft.VisualBasic
espace de noms et n'est pas un .NET fonction.If()
devrait être utilisé à la place, et évite tout un appel de fonction.OriginalL'auteur gbinflames