我正在使用数据集从数据库中提取数据。连续的字段之一是NULL
。我知道这个。但是,以下vb.net代码引发了StrongTypingException
(在数据集设计器的自动生成的get_SomeField()方法中):
If Not IsDBNull(aRow.SomeField) Then
'do something
End If
根据文档和this question应该很好。
编辑:
If aRow.SomeField is DBNull.Value Then
也返回相同的错误。啊 最佳答案
区别在于,在相关问题中,它是通过索引器谈论未类型化的值(即object
)。当您通过.SomeField
进行查询时,该类型已经包含在内-因此可以是int
等。并且在IsDBNull
上尝试int
毫无意义,因为int
可以而不是是DBNull
。
本质上SomeField
是一个包装器(请使用C#口音...)
public int SomeField {
get { return (int) this["someFieldName"]; }
set { this["someFieldName"] = value; }
}
我不是
DataTable
的大人物,但是您可以尝试按名称/索引/列进行检查;或将该列标记为可为空,使其成为Nullable<int>
(在上面的示例中)。关于.net - 检查DBNull会引发StrongTypingException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4689620/