int _ItemHisId = info.ItemHisId;
string _FeDesc = info.FeDesc;
string _FeName = info.FeName;
int _SaveStyle = info.SaveStyle;
int _OutSave = info.OutSave;
string _Para = info.Para;
string _ParaName = info.ParaName;string sql = "INSERT INTO Feature VALUES(@_ItemHisId,@_FeDesc,@_FeName,@_SaveStyle,@_OutSave,@_Para,@_ParaName)";
int rst = DBManager.ExecuteUpdate(sql, new object[] {_ItemHisId, _FeDesc, _FeName, _SaveStyle, _OutSave,_Para, _ParaName });
if(rst>0)

return true;
}
else

return false;
}
//被调用的方法    
public static int ExecuteUpdate(string sqlStr,params object[] param)
{
  int rows = 0;  try
  {
  SqlCommand cmd = new SqlCommand(sqlStr, Conn);
  cmd.Parameters.AddRange(param);
  cmd.Connection.Open();  try
  {
  rows = cmd.ExecuteNonQuery();
  }
  catch (Exception)
  {
  throw;
  }
  finally
  {
  cmd.Connection.Close();
  }
  }
  catch (Exception e)
  {
  MessageBox.Show(e.Message);   
  }
return rows;
}
是不是我调用的形式出了问题

解决方案 »

  1.   

    报错信息:
    SqlParameterCollection 只接受非空的SqlParameter类型对象,不接受Int32对象
      

  2.   

    int rst = DBManager.ExecuteUpdate(sql, new object[] {_ItemHisId, _FeDesc, _FeName, _SaveStyle, _OutSave,_Para, _ParaName });
    错误,没见过这么没有逻辑的三层调用
    你的三层是怎么架构的呢?我一般这样写:
      public static int getBookIdByName(string bookName)
               {
                   string cmdtxt = "select bookId from BS_bookInfo where bookName=@bookName";
                   int bookId = 0;
                   SqlParameter[] cmdparas = new SqlParameter[1];
                   cmdparas[0] = new SqlParameter("@bookName", SqlDbType.VarChar);
                   cmdparas[0].Value = bookName;
                   SqlDataReader sdr = SqlHelper.ExecuteReader(CommandType.Text, cmdtxt, cmdparas);
                   if (sdr.Read())
                   {
                       bookId = Convert.ToInt32(sdr["bookId"]);               }
                   return bookId;
               }
      

  3.   

    string sql = "INSERT INTO Feature VALUES(@_ItemHisId,@_FeDesc,@_FeName,@_SaveStyle,@_OutSave,@_Para,@_ParaName)";
    int rst = DBManager.ExecuteUpdate(sql, new object[] {_ItemHisId, _FeDesc, _FeName, _SaveStyle, _OutSave,_Para, _ParaName });
    这样调用出错