传入多个参数问题
//根据ID得到商品记录
public Product GetProduct(int ProductID)
{
Product Pro1=null;
mycmd.CommandType = CommandType.StoredProcedure;
mycmd.CommandText = "GetProduct";
mycmd.Parameters.Add(new SqlParameter("@ProductID",ProductID));
mycon.Open();
SqlDataReader mydr = mycmd.ExecuteReader();
if (mydr.Read())
{
Pro1= new Product();
Pro1.Name=(string)mydr["Name"];
if(mydr["Description"]!=DBNull.Value)
Pro1.Discription = (string)mydr["Description"];
Pro1.Price=(decimal)mydr["Price"];
if(mydr["Media"]!=DBNull.Value)
Pro1.Media = (string)mydr["Media"];
if(mydr["MediaAmount"]!=DBNull.Value)
Pro1.MediaAmount = (int)mydr["MediaAmount"];
}
mydr.Close();
mycon.Close();
return Pro1;
}
foreach (int iProductID in DicCart.Keys)
{
INumber = DicCart[iProductID];
Product Pro1=Srv.GetProduct(iProductID);
if (Pro1 != null)
{
Dsum = Pro1.Price * INumber;
MyTable.Rows.Add(iProductID, Pro1.Name, Pro1.Price, INumber, Dsum);
Dtotle += Dsum;
}
}
为什么我第二次调用存储过程时mycmd.Parameters.Add(new SqlParameter("@ProductID",ProductID));中Parameters变成了两个导致出现问题:传入过多参数。怎么解决啊
------解决方案--------------------
mycmd.Parameters.Clear() //清一下试试
mydr.Close();
mycon.Close();
------解决方案--------------------1楼正解,或者重新NEW一下也可以
------解决方案--------------------mycmd.Parameters.Clear();
mycmd.Parameters.Add(new SqlParameter("@ProductID",ProductID));
------解决方案--------------------C# code
mycmd.Parameters.Clear();
mycmd.Parameters.Add(new SqlParameter("@ProductID",ProductID));
------解决方案--------------------
mycmd.Parameters.Clear();
------解决方案--------------------
楼上都是对的,我就不说什么了