存储过程无效转换异常错误

本文关键字:错误 异常 转换 无效 存储过程 | 更新日期: 2023-09-27 18:30:22

我正在尝试在一个简单的控制台应用程序中访问存储过程,由于某种原因,我得到了一个InvalidCastException.

谁能帮忙?

    class Customer
    {
        public int CustomerID { get; set; }
        public string FirstName { get; set; }
        public string SecondName { get; set; }
        public int Age { get; set; }
    }
    static void Main(string[] args)
    {
        string storedProc = "dogssimple";
        List<Customer> custList = new List<Customer>();
        SqlConnection conn = new SqlConnection("server=localhost;" +
                                   "Trusted_Connection=yes;" +
                                   "database=mydatabase; " +
                                   "connection timeout=30");
        try
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(storedProc, conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                Customer addCustomer = new Customer() //..... cast exception here
                {
                    CustomerID = (int)rdr["CustomerID"],
                    FirstName = (string)rdr["FirstName"],
                    SecondName = (string)rdr["SecondName"],
                    Age = (int)rdr["Age"],
                }; //....
                Console.WriteLine("Customer: {0}, {1}, {2}, {3}", addCustomer.CustomerID, addCustomer.FirstName, addCustomer.Age, addCustomer.Age);
                custList.Add(addCustomer);
            }
            var age = from x in custList
                      select x.Age;
            var avgAge = age.Average();
            Console.WriteLine("The average age of the customers is " + avgAge);
        }
        catch (Exception e)
        {
            Console.WriteLine(e); ;
        }
        Console.ReadLine();   
}

存储过程无效转换异常错误

ADO.NET 返回

空值作为DBNull实例(如果你问我,这很奇怪)。因此,通过以下检查读取值:

SecondName = rdr["SecondName"] is DBNull ? null : (string)rdr["SecondName"]

还要确保数字类型匹配,例如,你可能需要一个整数,但你可能会得到一个浮点数或一个小数。