簡體   English   中英

存儲過程InvalidCastException錯誤

[英]Stored procedure InvalidCastException error

我試圖在一個簡單的控制台應用程序中訪問存儲過程,由於某種原因,我收到了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"]

還要確保數字類型匹配,例如。 您可能需要一個整數,但可能會得到一個浮點數或一個十進制數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM