这是代码I'用于通过DataReader从sql读取数据。当表中存在NULL时,它会给出Error。如何处理?
我试过
c.ActualWeight= dr[0] as float? ?? default(float);
这个问题是它成功处理NULL但结果是Always 0,即使sql数据库在该字段中的值为1。
{
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;
答案 0 :(得分:4)
您可以使用SqlDataReader.IsDBNull
检查数据读取器中的空值。 C#null
和DBNull
不同。
c.ActualWeight =
dr.IsDBNull(0)
? default(float)
: float.Parse(dr[0].ToString().Trim());
答案 1 :(得分:2)
你可以试试这个
if (dr.IsDBNull(0))
c.ActualWeight = default(float);
else
c.ActualWeight = float.Parse(dr[0].ToString().Trim());
答案 2 :(得分:1)
c.ActualWeight = (dr[0] != DBNull.Value) ? float.Parse(dr[0].ToString().Trim())
: default(float)
使用DBNull.Value
检查空值。