这是我的方法:
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/