我正在使用数据集从数据库中提取数据。连续的字段之一是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/

10-12 16:32