这是我的方法:

public void EjecutarGuardar(string ProcedimientoAlmacenado, object[] Parametros)
        {
            SqlConnection Connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

            SqlCommand Command = Connection.CreateCommand();
            Command.CommandText = ProcedimientoAlmacenado;
            Command.CommandType = CommandType.StoredProcedure;
            foreach (object X in Parametros)
            {
                Command.Parameters.Add(X);
            }

            Connection.Open();
            Command.ExecuteNonQuery();
            Connection.Close();

            Connection.Dispose();
        }


说我在对象数组PARAMETERS中添加了一个int,当它到达foreach语句时,我得到一个错误:


  仅SqlParameterCollection
  接受非null的SqlParameter类型
  对象,而不是Int32对象。


因此,我如何才能将所有参数加载到此类之外,然后将它们全部放入通用数组中,然后将其传递给此方法以达到神奇效果。有什么帮助吗?

编辑:一位朋友给我发送了此代码,它将起作用吗?我不明白它在做什么。 :S

protected void CargarParametros(SqlCommand Com, System.Object[] Args)
        {
            for (int i = 1; i < Com.Parameters.Count; i++)
            {
                SqlParameter P = (SqlParameter)Com.Parameters[i];
                if (i <= Args.Length )
                    P.Value = Args[i - 1];
                else
                    P.Value = null;
            }
        }

最佳答案

使用AddWithValue方法,

string []para={"@eno","@ename","@edate"};
object []val={11,"A","1-1-2002"};

System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(@"");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "proc_name";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = cn;
for(int i=0;i<para.Length;i++){
  cmd.Parameters.AddWithValue(para[i], val[i]);
}

cn.Open();
cmd.ExecuteNonQuery();
cn.Close();

关于c# - 如何在Sqlcommand.Parameters中添加数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1355681/

10-09 03:39