【发布时间】:2012-02-17 15:50:18
【问题描述】:
我有两种情况可以从 IDataReader 对象中提取信息
Case - 1 - 长度,计算序数然后解析字符串
public static string GetString(IDataReader rdr, string columnName)
{
int ordinal = rdr.GetOrdinal(columnName);
if (rdr.IsDBNull(ordinal))
{
return string.Empty;
}
return (string)rdr[ordinal];
}
案例2,短途,获取数据不计算序数
public static string GetString(IDataReader rdr, string columnName)
{
return (string)rdr[columnName];
}
应该首选哪种技术,为什么以及如果有任何特定的上下文?
【问题讨论】:
-
就我个人而言,我会使用第二个..也就是说,如果您不关心检查 columnName 是否存在..您是否总是确定得到非空值或非空值..??
-
Pavel 说的是对的,但是,您的函数不同之处在于它们返回 string.Empty 和 null,这可能会在您使用返回值时产生意想不到的结果。
-
@EricH 第二个示例将为空数据引发 InvalidCastException。您不能将 DBNull 转换为字符串。
标签: c# vb.net c#-4.0 idatareader