从数据库中获取NULL值并分配给Date变量

The*_*TXI 3 vb.net asp.net date

存储过程返回有关用户记录的数据,包括上次登录日期的可空日期时间列.在尝试分配.Net日期变量时,哪一个是处理NULL值可能性的更好选择?

    Try
        _LastLogin = CDate(DT.Rows(0)("LastLogin"))
    Catch ex As InvalidCastException
        _LastLogin = Nothing
    End Try
Run Code Online (Sandbox Code Playgroud)

要么

    If DT.Rows(0)("LastLogin") Is DBNull.Value Then
        _LastLogin = Nothing
    Else
        _LastLogin = CDate(DT.Rows(0)("LastLogin"))
    End If
Run Code Online (Sandbox Code Playgroud)

编辑:我也忘记了使用TryParse的可能性

    If Not Date.TryParse(DT.Rows(0)("LastLogin").ToString, _LastLogin) Then
        _LastLogin = Nothing
    End If
Run Code Online (Sandbox Code Playgroud)

哪个是NULL从数据库中处理可能值的首选方法?有没有比列出的三个更好的方法?

编辑#2:我注意到TryParse在尝试分配Nullable类型时该方法不能很好.

Mat*_*nig 6

第二个代码片段更好.例外是针对特殊情况,而不是您预期会发生的情况.此外,意图更好.很明显,您期望DBNull成为可能的值,并且您希望相应地处理它.

此外,如果值不为null但不可解析,则可能会产生意外后果(尽管这可能永远不会发生).