在Datareader中处理NULL

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

我试过了

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

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

 { List LC = new List(); 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; 

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

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

你可以试试这个

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

使用DBNull.Value检查空值。