繁体   English   中英

System.InvalidCastException:“无法将“System.Double”类型的 object 转换为“System.Single”类型。

[英]System.InvalidCastException: 'Unable to cast object of type 'System.Double' to type 'System.Single'.'

嗨,我在 _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

AS SELECT Id, Na, Al, Sc, So, Ta, Ai, Sh FROM x 我没有任何双精度值,最接近双精度的是 Sc(float)。 所以我尝试了 Sc = Convert.ToSingle(rdr.GetFloat(3))。 我在哪里做错了? 编辑-我的 model

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的数据类型从float更改为double

Double SQL 服务器real数相当于 C# Single和 SQL 服务器float相当于Double

你也应该考虑@jdweng点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM