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!

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top