GidView连续插入多条记录的问题

grt 2007-03-29 12:05:06
出现的错误提示:(程序已通过编译了,执行时出错的)
变量名 '@code' 已声明。变量名在批查询或存储过程内部必须唯一。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 变量名 '@code' 已声明。变量名在批查询或存储过程内部必须唯一。

源错误:


行 77: SqlDataSource1.InsertParameters.Add("zglb",TypeCode.String, GridView2.Rows[i].Cells[3].Text);
行 78: SqlDataSource1.InsertParameters.Add("text",TypeCode.String, GridView2.Rows[i].Cells[4].Text);
行 79: SqlDataSource1.Insert();
行 80: // Response.Write(zglb + text);
行 81: //Response.Write(this.GridView2.Rows[i].Cells[3].Text + this.GridView2.Rows[i].Cells[4].Text + "<br />");


源文件: d:\anjzNET\ks1\Jd_1Add.ascx.cs 行: 79

代码:
protected void Button1_Click(object sender, EventArgs e)
{
CheckBoxList CheckBoxList1 = new CheckBoxList();

for (int i = 0; i < this.GridView2.Rows.Count; i++)
{

CheckBoxList1 = ((CheckBoxList)this.GridView2.Rows[i].FindControl("CheckBoxList1"));
if (CheckBoxList1.Items[0].Selected)
{

SqlDataSource1.InsertCommand = "Insert into jd_1(code,code_id,zglb,text) Values(@code,@code_id,@zglb,@text)";
SqlDataSource1.InsertParameters.Add("code", TypeCode.String, GridView1.Rows[GridView1.SelectedIndex].Cells[3].Text);
SqlDataSource1.InsertParameters.Add("code_id", TypeCode.String, GridView1.Rows[GridView1.SelectedIndex].Cells[4].Text);
SqlDataSource1.InsertParameters.Add("zglb",TypeCode.String, GridView2.Rows[i].Cells[3].Text);
SqlDataSource1.InsertParameters.Add("text",TypeCode.String, GridView2.Rows[i].Cells[4].Text);
SqlDataSource1.Insert();
//Response.Write(this.GridView2.Rows[i].Cells[3].Text + this.GridView2.Rows[i].Cells[4].Text + "<br />");
}
}
...全文
251 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
grt 2007-03-29
  • 打赏
  • 举报
回复
大家帮个忙
grt 2007-03-29
  • 打赏
  • 举报
回复
不行,还是老样子
lovehongyun 2007-03-29
  • 打赏
  • 举报
回复
按一楼的方法试一下.
bzhi268 2007-03-29
  • 打赏
  • 举报
回复
if (CheckBoxList1.Items[0].Selected)
{
SqlDataSource1.InsertParameters.Clear();
//下面的都一样,就在前面加这句
grt 2007-03-29
  • 打赏
  • 举报
回复
谢谢,现在先一条条插吧,有时间再说吧
jimu8130 2007-03-29
  • 打赏
  • 举报
回复
因为我现在没有vs的环境无法进行调试
但是你有vs有msdn,完全可以自己摸索着写语句
grt 2007-03-29
  • 打赏
  • 举报
回复
不行,SqlDataSource1.InsertParameters.Clear();一下后出现乱码
new parameter(类型,长度,id)不知怎么写
jimu8130 2007-03-29
  • 打赏
  • 举报
回复
在1.1的时候对一个数据库存储过程操作的时候
都是先new parameter(类型,长度,id)
然后在加入到command的sqlparameter里面去并且赋值

类似的建议你在for循环外先对要加入到sqldatasource的insertparameter进行定义,然后加入到sqldatasource的insertparameter中来(但不赋值),先定义也就是new一下
然后在for循环里面定位到相应的参数进行赋值,每次赋值前SqlDataSource1.InsertParameters.Clear();一下
你看看这样能不能实现你要的效果?我没有用过,所以上面是猜测,不一定正确

62,072

社区成员

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

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

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

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