为什么,
我在 obj.Add(new data()... 行上收到此错误
这是我的代码
SqlCommand com = new SqlCommand("sp_get_a", con)
{
CommandType = CommandType.StoredProcedure
};
_obj = new List<n>();
con.Open();
SqlDataReader rdr = com.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
_obj.Add(new data() { Id = rdr.GetInt32(0), na = rdr.GetString(1), Al = rdr.GetString(2), Sc = rdr.GetFloat(3), So = rdr.GetInt32(4), Ta = rdr.GetInt32(5), Ai = rdr.GetInt32(6), Sh = rdr.GetInt32(7) });
}
}
else
{
throw new Exception("rdr don't have any rows");
}
con.Close();
我的存储过程
CREATE PROCEDURE sp_get_a
作为
选择 Id、Na、Al、Sc、So、Ta、Ai、Sh
来自 x
我没有任何双精度值,最接近双精度值的是 Sc(float)。所以我尝试了 Sc = Convert.ToSingle(rdr.GetFloat(3))。
我哪里做错了?
编辑-我的模型
public class n
{
public int Id { get; set; }
public string Na { get; set; }
public string Al { get; set; }
public float Sc { get; set; }
public int So { get; set; }
public int Ta { get; set; }
public int Ai { get; set; }
public int Sh { get; set; }
}
您需要更改的数据类型Sc
from float
to double
SQL服务器real
相当于C#Single
和 SQL 服务器float
相当于C#Double
.
你也应该考虑@jdweng 点
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)