Eine gespeicherte Prozedur gibt Daten über einen Benutzerdatensatz mit einer Nullwert-Datetime-Spalte für ihr letztes Anmeldedatum zurück. Welches ist die bessere Wahl im Umgang mit der Möglichkeit für NULL-Werte beim Versuch, eine .Net Datumsvariable zuzuweisen?NULL-Wert von der Datenbank übernehmen und einer Date-Variablen zuweisen
Try
_LastLogin = CDate(DT.Rows(0)("LastLogin"))
Catch ex As InvalidCastException
_LastLogin = Nothing
End Try
oder
If DT.Rows(0)("LastLogin") Is DBNull.Value Then
_LastLogin = Nothing
Else
_LastLogin = CDate(DT.Rows(0)("LastLogin"))
End If
bearbeiten: Ich habe vergessen, auch über die Möglichkeit, eine TryParse der Verwendung
If Not Date.TryParse(DT.Rows(0)("LastLogin").ToString, _LastLogin) Then
_LastLogin = Nothing
End If
, die das bevorzugte Verfahren zur Handhabung möglich NULL
Werte aus der Datenbank? Gibt es einen besseren Weg als die drei aufgeführten?
Edit # 2: Ich habe bemerkt, dass die TryParse
Methode nicht schön spielt, wenn sie einen Nullable
Typen zuordnen will.
Das Problem mit Ihrer TryParse-Methode besteht darin, dass eine Ausnahme von der ToString-Methode ausgelöst wird, wenn "LastLogin" null ist. – Kev
Kev: Wenn ich mich nicht irre, wird der Aufruf von ToString bei einem NULL-Abruf zu einer leeren Zeichenfolge führen (zumindest so, wie sie für meine anderen Informationen ausgeführt wurde, die in Strings zurückgenommen und gespeichert wurden).Ich muss aber vielleicht noch einmal nachsehen. – TheTXI
Ja, DBNull.Value.ToString() return String.Empty – bdukes