Question sur ASP.NET et type Comparaison DBNull
Question
J'ai une fonction qui tire des articles enregistrements à partir d'une base de données MSSQL. Certains sont des URL à des fichiers PDF, et d'autres sont des articles réels stockés dans SQL. Les articles qui sont stockés n'ont pas une URL (DBNull) dans le dossier, donc je veux être en mesure d'analyser cela. J'ai essayé un test simple:
If Row.Item("url").GetType Is GetType(DBNull) Then
//' do something here....
End If
Cependant, je reçois l'exception "Conversion from type 'DBNull' to type 'String' is not valid.
". La partie drôle est, quand je fais une montre au-dessus conditionnelle, elle retourne True
ou False
.
Quelqu'un sait pourquoi cela se passe et / ou un moyen de résoudre ce problème? Merci!
La solution
Pourquoi ne pas utiliser:
If Row.IsNull("url") Then
//' do something here....
End If
Autres conseils
J'ai toujours juste utiliser ce test sur le dossier:
If IsDBNull(strSQLTiggRes("url")) Then
'Do something .
Else
'do something else
end if
J'aime
if (DBNull.Value.Equals(Row.Item("url")))
Essayez
If Row.Item("url") = DBNull.Value
L'erreur vous dit que Row.Item("url")
est un System.String
si la valeur à ce point ne sera pas par DbNull
.
Essayez quelque chose comme ceci:
If Row.Item("url") Is Nothing Then
//' do something here....
End If
ne peut pas vous faire juste
If Row.Item("url") = DBNull.Value Then
End If
Ma préférence est:
If Not Object.Equals(DBNull.Value, Row.Item("url")) Then
'Hooray!
End If
En VB, vous pouvez également utiliser la fonction IsDBNull
(disclaimer Microsoft.VisualBasic
) directement:
If Not IsDBNull(Row.Item("url")) Then
'Hooray!
End It
utiliser.
if row("ColumnName") is DBNull.value Then
'do something
end if
Vous constaterez que vous devez utiliser est dans ce cas et vous nee DTO comparer les valeurs non seulement les types. Vous pouvez également le mettre en fonction réutilisable que vous pouvez utiliser pour revenir au lieu de rien DBNull
function checkvalue(item as object)
if item is dbnul.value then
return nothing
else
return item
end if
end function