日期:2014-05-18  浏览次数:20969 次

指定的转换无效。
C# code
public List<PetShop.Model.ItemInfo> GetItemById(string ItemId)
       
        {

            string sql = "select item.itemid, item.name, item.listprice, product.name, item.image, product.categoryid, product.productid from item inner join product on item.productid = product.productid where item.itemid = @itemid";
            string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ssa"].ConnectionString;

       

            List<PetShop.Model.ItemInfo> list = new List<PetShop.Model.ItemInfo>();
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(sql, connection);
                connection.Open();

                command.Parameters.Add("@itemid", SqlDbType.NVarChar).Value = ItemId;

                SqlDataReader reader = command.ExecuteReader();


                if (reader.Read())
                {
                     PetShop.Model.ItemInfo item = new PetShop.Model.ItemInfo()
                    {
                        ItemId = reader.GetString(0),
                        Name = reader.GetString(1),
                        Quantity = reader.GetInt32(2),
                        ListPrice = reader.GetDecimal(3),
                        ProductName = reader.GetString(4),
                        Image = reader.GetString(5),
                        CategoryId = reader.GetString(6),
                        ProductId = reader.GetString(7)
                    };
                
                list.Add(item);

                }
                return list;
               
            }


------解决方案--------------------
赋值之前最好判断一下值是否为空
ItemId = reader.GetString(0),
如果为空,转换为string 肯定报错