Handle NULL in Datareader

天大地大妈咪最大 提交于 2019-12-31 03:58:11

问题


This is the code I' using for reading data from sql through DataReader. It gives Error when there is a NULL in table. How to handle it?

I tried

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

The problem with this is that it is successful in Handling NULLs but the result is Always 0 even if the sql database has value 1 in that field.

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

回答1:


You can use SqlDataReader.IsDBNull to check for null values out of a data reader. C# null and DBNull are different.

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



回答2:


You can try this

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



回答3:


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

use the DBNull.Value to check for null values.



来源:https://stackoverflow.com/questions/23397643/handle-null-in-datareader

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!