在Datareader中处理NULL

时间:2014-04-30 20:42:12

标签: c# sql sqldatareader datareader

这是代码I'用于通过DataReader从sql读取数据。当表中存在NULL时,它会给出Error。如何处理?

我试过

c.ActualWeight= dr[0] as float? ?? default(float);

这个问题是它成功处理NULL但结果是Always 0,即使sql数据库在该字段中的值为1。

{ 
    List<Inventory_Connector> LC = new List<Inventory_Connector>();
    string ConString = "data source=DELL\\SQLSERVER1;Initial Catalog=Camo;Integrated Security=True";
    SqlConnection con = new SqlConnection(ConString);
    SqlCommand cmd = new SqlCommand("Select Top 17 * from Inventory_Connector", con);
    con.Open();
    SqlDataReader dr = cmd.ExecuteReader();

    while (dr.Read())
    {
        c.ActualWeight = float.Parse(dr[0].ToString().Trim());
    }

    LC.Add(c);
}

dr.Close();
con.Close();
return LC;

3 个答案:

答案 0 :(得分:4)

您可以使用SqlDataReader.IsDBNull检查数据读取器中的空值。 C#nullDBNull不同。

 c.ActualWeight = 
     dr.IsDBNull(0) 
     ? default(float) 
     : float.Parse(dr[0].ToString().Trim());

答案 1 :(得分:2)

你可以试试这个

if (dr.IsDBNull(0))
   c.ActualWeight = default(float);
else
   c.ActualWeight = float.Parse(dr[0].ToString().Trim());

答案 2 :(得分:1)

c.ActualWeight = (dr[0] != DBNull.Value) ? float.Parse(dr[0].ToString().Trim()) 
                                         : default(float)

使用DBNull.Value检查空值。