我正在使用数据集从数据库中提取数据.一行中的一个字段为NULL.我知道这个.但是,以下vb.net代码会引发StrongTypingException(在数据集设计器中的自动生成的get_SomeField()方法中):
If Not IsDBNull(aRow.SomeField) Then 'do something End If
根据文件和this question应该是罚款.
编辑:如果aRow.SomeField是DBNull.Value然后也返回相同的错误.哎呀.
不同的是,在相关的问题中,它是通过索引器来谈论一个无类型的值(即对象).当您通过.SomeField时,该类型已经包含在内 – 所以这可以是int等.在int上尝试IsDBNull是没有意义的,因为int永远不会是DBNull.
实质上,SomeField是一个包装(为了C#的口音…)
public int SomeField { get { return (int) this["someFieldName"]; } set { this["someFieldName"] = value; } }
我不是一个巨大的DataTable人,但您可以尝试通过name / index / column进行检查;或将列标记为可空,以使其为Nullable< int> (在上面的例子中).