这是我用于通过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;
您可以用来SqlDataReader.IsDBNull从数据读取器中检查空值。C#null和DBNull有所不同。
SqlDataReader.IsDBNull
null
DBNull
c.ActualWeight = dr.IsDBNull(0) ? default(float) : float.Parse(dr[0].ToString().Trim());