另一个 SqlParameterCollection 中已包含 SqlParameter。

陈韵诗 2012-10-12 04:28:37
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentException: 另一个 SqlParameterCollection 中已包含 SqlParameter。

源错误:


行 47: foreach (SqlParameter Pre in PreArray)
行 48: {
行 49: Cmd.Parameters.Add(Pre);
行 50:
行 51: }


源文件: e:\jyxt\jyxt\App_Code\TopSql.cs 行: 49


这个是底层
//数据库操作函数(PreArray 存储过程参数集合,ProcName 存储过程名称)
public bool SqlCmd(List<SqlParameter> PreArray, string ProcName)
{
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Connection = Con;
Con.Open();

try
{
foreach (SqlParameter Pre in PreArray)
{
Cmd.Parameters.Add(Pre);

}

Cmd.CommandText = ProcName;
Cmd.ExecuteNonQuery();
return true;
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.ToString());

}
finally
{
Cmd.Dispose();
Con.Close();


}

}

这个是按钮里的事件
t.JYID = this.Label1.Text;
DataSet ds = t.SelTradingbyJYID();
ds.Dispose();
d1.DisputeID = Convert.ToString("ZY".ToString() + this.Label1.Text.ToString());//争议订单编号
d1.SayID = Request["buy"].ToString();//买家帐号
d1.JYID = ds.Tables[0].Rows[0]["JYID"].ToString();//订单编号
d1.Content = this.TextBox1.Text;//买家发言内容
d1.Addtime = DateTime.Now.ToString();//发言时间
if (d1.Content != null && d1.Content != "")
{
d1.AddDispute11();
t.JYID = this.Label1.Text;
t.State = 9;
t.UpdateState();
Response.Write("<script>alert('投诉成功,请查看争议详情!');window.location.replace('pindent.aspx')</script>");
}
else
{
Response.Write("<script>alert('请输入投诉理由!');window.location.replace('ts.aspx?xd_rn=" + t.JYID + "&buy=" + Request["buy"].ToString() + "')</script>");
}



在 d1.AddDispute11();地方出错的

下面是这个方法
public void AddDispute11()
{
List<SqlParameter> Arr = new List<SqlParameter>();

SqlParameter Par_DisputeID = new SqlParameter("@DisputeID", SqlDbType.NVarChar,50);//争议订单编号
Par_DisputeID.Value = Get_DisputeID;
Arr.Add(Par_DisputeID);

SqlParameter Par_JYID = new SqlParameter("@JYID", SqlDbType.NVarChar,50);//订单编号
Par_JYID.Value = Get_JYID;
Arr.Add(Par_JYID);
SqlParameter Par_Content = new SqlParameter("@Content", SqlDbType.NVarChar, 50);//内容
Par_Content.Value = Get_Content;
Arr.Add(Par_Content);
SqlParameter Par_SayID = new SqlParameter("@SayID", SqlDbType.NVarChar, 50);//发言人帐号
Par_SayID.Value = Get_SayID;
Arr.Add(Par_JYID);
SqlParameter Par_Addtime = new SqlParameter("@Addtime", SqlDbType.DateTime);//发言时间
Par_Addtime.Value = Get_Addtime;
Arr.Add(Par_Addtime);

SqlCmd(Arr, "P_AddDispute1");
}



求救,哪里出问题了?之前还不会的
...全文
315 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈韵诗 2012-10-12
  • 打赏
  • 举报
回复
楼上发方法都是过了,还是不行
注释掉的地方都试过了,3个位置都试过了,不行
//数据库操作函数(PreArray 存储过程参数集合,ProcName 存储过程名称)
public bool SqlCmd(List<SqlParameter> PreArray, string ProcName)
{
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Connection = Con;
Con.Open();
//Cmd.Parameters.Clear();
try
{
// Cmd.Parameters.Clear();
foreach (SqlParameter Pre in PreArray)
{
Cmd.Parameters.Add(Pre);

}

Cmd.CommandText = ProcName;
Cmd.ExecuteNonQuery();
return true;
}
catch (System.Data.SqlClient.SqlException e)
{
throw new Exception(e.ToString());

}
finally
{
//Cmd.Parameters.Clear();

Cmd.Dispose();
Con.Close();


}
  • 打赏
  • 举报
回复
cmd.Parameters.Clear();
  • 打赏
  • 举报
回复
通常都这样写的


/// <summary>
/// 执行带参数的增删改SQL语句或存储过程
/// </summary>
/// <param name="cmdtxt">增删改SQL语句或存储过程</param>
/// <param name="paras">参数集合</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public static int ExecuteQuery(string cmdtxt, OleDbParameter[] paras, CommandType ct)
{
int rows;
using (OleDbConnection conn = Createconn())
{
OleDbCommand cmd = new OleDbCommand(cmdtxt, conn);
conn.Open();
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);
rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
return rows;
}
wangchangming 2012-10-12
  • 打赏
  • 举报
回复
在finally中把Cmd.Parameters.Clear()清空下.
finally
{
Cmd.Parameters.Clear();
Cmd.Dispose();
Con.Close();


}
孟子E章 2012-10-12
  • 打赏
  • 举报
回复
Cmd.Parameters.Clear();试试
foreach (SqlParameter Pre in PreArray)
{
Cmd.Parameters.Add(Pre);

}

61,657

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧