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 番目のパラメーターには、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 Constructorの作成方法を取得できます

配列を作成したい場合: SqlParameter[] parameter = { new SqlParameter(...), new SqlParameter(...), new SqlParameter(...) };

于 2013-04-24T10:39:32.440 に答える