好的,这很奇怪.今晚我在为公司网站添加功能时遇到了这个问题.
我正在构建一个自定义日历控件,用于查询我们的数据库以显示公司事件.这是情况,EndDate存储了一个值,并且在开发系统上,其中一个事件具有NULL值.没什么大不了的,因为它只是一个测试系统,但在尝试使用它之前还要检查安全方面.我认为以下代码可行:
While dr.Read()
corporateTable.Rows.Add(New Object() { _
Convert.ToDateTime(dr("EventBeginDate")) _
, IIf(dr("EventEndDate") Is DBNull.Value, Convert.ToDateTime(dr("EventBeginDate")).AddDays(1), Convert.ToDateTime(dr("EventEndDate"))) _
, Convert.ToString(dr("EventType")) _
, Convert.ToString(dr("EventDescription")) _
, Convert.ToString(dr("EventMessage")) _
})
End While
Run Code Online (Sandbox Code Playgroud)
但它没有,我仍然得到Object cannot be cast from DBNULL错误.所以我考虑过它并提出了这个成功运行的代码,虽然我不喜欢它并认为它很难看.
While dr.Read()
Dim column As Integer = 0
While column < dr.FieldCount - 1
If dr.GetName(column) = "EventEndDate" Then
Exit While
End If
column += 1
End While
corporateTable.Rows.Add(New Object() { _
Convert.ToDateTime(dr("EventBeginDate")) _
, IIf(dr.IsDBNull(column), Convert.ToDateTime(dr("EventBeginDate")).AddDays(1), dr.Item(column)) _ …Run Code Online (Sandbox Code Playgroud)