存储过程返回有关用户记录的数据,包括上次登录日期的可空日期时间列.在尝试分配.Net日期变量时,哪一个是处理NULL值可能性的更好选择?
Try _LastLogin = CDate(DT.Rows(0)("LastLogin")) Catch ex As InvalidCastException _LastLogin = Nothing End Try
要么
If DT.Rows(0)("LastLogin") Is DBNull.Value Then _LastLogin = Nothing Else _LastLogin = CDate(DT.Rows(0)("LastLogin")) End If
编辑:我也忘记了使用TryParse的可能性
If Not Date.TryParse(DT.Rows(0)("LastLogin").ToString, _LastLogin) Then _LastLogin = Nothing End If
哪个是NULL
从数据库中处理可能值的首选方法?有没有比列出的三个更好的方法?
编辑#2:我注意到TryParse
在尝试分配Nullable
类型时该方法不能很好.
第二个代码片段更好.例外是针对特殊情况,而不是您预期会发生的情况.此外,意图更好.很明显,您期望DBNull成为可能的值,并且您希望相应地处理它.
此外,如果值不为null但不可解析,则可能会产生意外后果(尽管这可能永远不会发生).