2008-12-18 107 views
2

我正在查询的数据库正在返回一些空值。 如何防范此问题并确保呼叫者获取一些数据。处理来自数据库的空值

我的代码是:

使用DataReader的

 while (dr.Read()) 
     { 
      vo = new PlacementVO(); 
      vo.PlacementID = dr.GetString(0); 

如果我使用的数据集,我能做到这样。

obj.email = (row["email"] == DBNull.Value) ? String.Empty : Convert.ToString(row["email"]); 

感谢

回答

5

IsDBNull(int ordinal)如果您使用的序号(你是)。

所以:

string email = reader.IsDBNull(0) ? null : reader.GetString(0); 

如果您正在使用的字符串列名的工作,然后用这个你得先打电话GetOrdinal,例如:

string GetSafeString(this IDataReader reader, string name) 
{ 
    int index = reader.GetOrdinal(name); 
    return reader.IsDBNull(0) ? null : reader.GetString(0); 
} 

。当然,这是加快只查一次序数,而不是每行一次。

类似的方法可以用于int?等,或者使用默认值而不是null。

+0

赞赏 - 作品一种享受。 – user17510 2008-12-18 08:33:00

1

另一种方式是ISNULL列可以为null更换时,它是空)添加到实际的SQL查询。更少的代码,并且在客户端代码中无需执行任何操作。