一尘不染

在Datareader中处理NULL

sql

这是我用于通过DataReader从sql读取数据的代码。当表中有NULL时,它将给出错误。怎么处理呢?

我试过了

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

问题是它可以成功处理NULL,但是即使sql数据库在该字段中的值为1,结果也始终为0。

{ 
    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;

阅读 160

收藏
2021-05-05

共1个答案

一尘不染

您可以用来SqlDataReader.IsDBNull从数据读取器中检查空值。C#nullDBNull有所不同。

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