SqlCommand 关于Parameters的问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:47:49
static readonly SqlParameter[] sps;
static Brand()
{
sps = new SqlParameter[4];
sps[0] = new SqlParameter("@PKID", SqlDbType.TinyInt, 2);
sps[0].Direction = ParameterDirection.Output;
sps[1] = new SqlParameter("@Name", SqlDbType.VarChar, 50);
sps[2] = new SqlParameter("@Picture", SqlDbType.VarChar, 120);
sps[3] = new SqlParameter("@Url", SqlDbType.VarChar, 120);
}

private static SqlCommand SetCmd(string sProcedure,SqlParameter[]sps)
{
SqlCommand cmd = new SqlCommand(sProcedure,new SqlConnection(sConnectionString));
cmd.CommandType = CommandType.StoredProcedure;
if (sps != null)
{
cmd.Parameters.AddRange(sps);
}
return cmd;
}

publi

你的sps是全局变量,.每一次调用都会受影响(值会改变).所以在向其添加参数前,先清空里面的元素.

public static void Save(Camera.OL.Brand brand)
{
sps[1].Value = brand.Name;
sps[2].Value = brand.Picture;
sps[3].Value = brand.Url;
object[]obj;
sps = new System.Data.SqlClient.SqlParameter [ 1 ];
DBHelper.Execute("Camera_Brand_Save", sps, new string[] { "@PKID" }, out obj);//当第二遍执行的时候 System.ArgumentException: 另一个 SqlParameterCollection //中已包含 SqlParameter。
brand.PKID = Convert.ToInt32(obj[0]);
list.Add(brand);
}

试试这样.

有什么问题 是不是出错了?