【发布时间】:2014-04-30 20:42:11
【问题描述】:
这是我用来通过 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;
【问题讨论】:
-
第一列
Inventory_Connector是什么类型? -
只是一个注释,您选择前 17 行,并将每行的值放入 c.ActualWeight,然后将
c添加到列表并重新初始化它。这意味着您的实际体重只会是您数据库中最后一次输入的体重。 -
另外不要忘记为
con、cmd和dr调用Dispose方法。或者更好的是,使用using语句。
标签: c# sql sqldatareader datareader