cal*_*cat 9 .net vb.net dbnull
我正在使用数据集从数据库中提取数据.连续的一个领域是NULL.我知道这个.但是,以下vb.net代码会抛出StrongTypingException(在数据集设计器中的自动生成的get_SomeField()方法中):
If Not IsDBNull(aRow.SomeField) Then
'do something
End If
编辑:If aRow.SomeField is DBNull.Value Then也返回相同的错误.哎呀.
Mic*_*Sim 17
只是一些附加信息:异常是因为您使用的是强类型DataSet.StrongTypingException文档说:
用户访问DBNull值时由强类型DataSet引发的异常.
强类型DataSet的使用与非类型化DataSet的使用略有不同.使用强类型数据集,您可以自动获得可以调用的字段的一些扩展/附加方法.在你的情况下,你很可能不得不打电话:
If Not aRow.IsSomeFieldNull Then
'do something
End If
Run Code Online (Sandbox Code Playgroud)
object不同之处在于,在相关问题中,它是通过索引器谈论非类型化值(即)。当你通过 via 时.SomeField,类型已经包含在内 - 所以这可能是等等。尝试anint是没有意义的,因为 an永远不可能。IsDBNullintintDBNull
本质上它SomeField是一个包装器(请原谅 C# 口音......)
public int SomeField {
get { return (int) this["someFieldName"]; }
set { this["someFieldName"] = value; }
}
Run Code Online (Sandbox Code Playgroud)
我不是一个大人物DataTable,但你可以尝试通过名称/索引/列来检查;或者将该列标记为可为空,以便它可以为空Nullable<int>(在上面的示例中)。