在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# null
和DBNull
是不同的。
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
检查空值。