【发布时间】:2013-09-04 05:42:10
【问题描述】:
我想从数据库中检索十进制值,我想知道哪种方法是检查空值的推荐方法。
我在MSDN - DBNull.Value Field 上看到很少使用此检查。
因此,reader.IsDBNull 是检查空值的最佳/最有效方法吗?
我创建了 2 个示例方法:
public static decimal? GetNullableDecimal(SqlDataReader reader, string fieldName)
{
if (reader[fieldName] == DBNull.Value)
{
return null;
}
return (decimal)reader[fieldName];
}
public static decimal? GetNullableDecimal_2(SqlDataReader reader, string fieldName)
{
if (reader.IsDBNull(reader[fieldName]))
{
return null;
}
return (decimal)reader[fieldName];
}
大多数情况下,这些字段将为空。
提前致谢!
【问题讨论】:
-
你更喜欢哪一个并且觉得最易读。但是,值得注意的是,鉴于在第二个中使用了
reader.GetOrdinal,您的示例并不严格等效。 -
在内部语法
reader[fieldName]被解析为reader.GetOrdinal(fieldName) -
我已经修改了示例以在两种情况下都使用 reader[fieldName]
标签: c# ado.net sqldatareader dbnull