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

传入多个参数问题
//根据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();
------解决方案--------------------
楼上都是对的,我就不说什么了