0
public int set(string procName , object[] param)
{
      SqlConnection conn = new SqlConnection(constr);
      conn.Open();

      SqlCommand cmd = new SqlCommand(procName,conn);
      cmd.CommandType = CommandType.StoredProcedure;

      foreach(object o in param)
      {
         cmd.Parameters.Add(o);      // Error
      }
      int res = cmd.ExecuteNonQuery();
      conn.Close();
      return res;
}

这些值通过调用函数正确传递......函数'set'的第二个参数包含2个字符串值。

即使在 ERROR 语句中,“o”也包含第一个值“Computer”,但如上所述表示 ERROR。

4

2 回答 2

2

您需要在您的集合中添加新的SqlParameter ,例如:

cmd.Parameters.Add(new SqlParameter(o.ToString(), o));

上面的语句只是为了说明如何在命令参数中添加参数。我不确定你为什么要向存储过程发送一个只有一个值的参数,你的方法正在接受并object输入数组,如果数组包含 SqlParameter 那么你可以这样做:

cmd.Parameters.Add((SqlParameter) o);

否则,您需要指定参数名称及其值。

您可以修改您的方法以接受类型对象数组,SqlParameter然后将它们添加到命令参数中。

于 2013-04-24T10:34:52.917 回答
1

尝试更改参数类型。

public int set(string procName , SqlParameter[] param)
        {
              SqlConnection conn = new SqlConnection(constr);
              conn.Open();

          SqlCommand cmd = new SqlCommand(procName,conn);
          cmd.CommandType = CommandType.StoredProcedure;

          foreach(SqlParameter o in param)
          {
             cmd.Parameters.Add(o);      // Error
          }
          int res = cmd.ExecuteNonQuery();
          conn.Close();
          return res;
    })

您可以了解如何创建 SqlParameter SqlParameter 构造函数

如果你想创建数组: SqlParameter[] parameter = { new SqlParameter(...), new SqlParameter(...), new SqlParameter(...) };

于 2013-04-24T10:39:32.440 回答