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。
答案 0 :(得分:2)
您需要在收藏中添加新的SqlParameter,例如:
cmd.Parameters.Add(new SqlParameter(o.ToString(), o));
以上语句仅用于说明如何向命令参数添加参数。我不确定你为什么要向存储过程发送只有一个值的参数,你的方法是接受和object
类型数组,如果数组包含SqlParameter那么你可以这样做:
cmd.Parameters.Add((SqlParameter) o);
否则您需要指定参数名称及其值。
您可以修改方法以接受SqlParameter
类型对象的数组,然后将其添加到命令参数中。
答案 1 :(得分: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(...)
};