Frage zum Typ Vergleich ASP.NET und DBNull
Frage
Ich habe eine Funktion, die Artikel Datensätze aus einer MSSQL-Datenbank zieht. Einige sind URLs PDFs und andere sind aktuelle Artikel in der SQL gespeichert. Die Artikel, die gespeichert sind, haben keine URL (DBNull) in der Aufzeichnung, so möchte ich in der Lage sein, das zu analysieren. Ich habe versucht, einen einfachen Test:
If Row.Item("url").GetType Is GetType(DBNull) Then
//' do something here....
End If
Allerdings bekomme ich die „Conversion from type 'DBNull' to type 'String' is not valid.
“ Ausnahme. Der lustige Teil ist, wenn ich eine Uhr auf der obigen Bedingung tun, es gibt True
oder False
.
Wer weiß, warum dies geschieht und / oder eine Möglichkeit, dies zu beheben? Dank!
Lösung
Warum nicht einfach verwenden:
If Row.IsNull("url") Then
//' do something here....
End If
Andere Tipps
Ich habe immer nur diesen Test auf der Platte verwendet werden:
If IsDBNull(strSQLTiggRes("url")) Then
'Do something .
Else
'do something else
end if
Ich mag
if (DBNull.Value.Equals(Row.Item("url")))
Versuchen
If Row.Item("url") = DBNull.Value
Der Fehler, dass Row.Item("url")
sagt ein System.String
wird so der Wert an dieser Stelle nicht durch DbNull
.
Versuchen Sie etwas wie folgt aus:
If Row.Item("url") Is Nothing Then
//' do something here....
End If
Können Sie nicht einfach tun,
If Row.Item("url") = DBNull.Value Then
End If
Meine Präferenz ist:
If Not Object.Equals(DBNull.Value, Row.Item("url")) Then
'Hooray!
End If
In VB, können Sie auch die IsDBNull
Funktion (Microsoft.VisualBasic
Haftungsausschluss) direkt an:
If Not IsDBNull(Row.Item("url")) Then
'Hooray!
End It
verwenden.
if row("ColumnName") is DBNull.value Then
'do something
end if
Sie werden feststellen, dass Sie verwenden, muss in diesem Fall ist und Sie nee dto die Werte nicht nur die Typen vergleichen. Sie können auch sie in eine wiederverwendbare Funktion setzen wollen, die Sie anstelle von DBNull zurückzukehren nichts verwenden
function checkvalue(item as object)
if item is dbnul.value then
return nothing
else
return item
end if
end function