利用哈希表批量插入数据,出现”已添加项,字典中的关键词“错误

aykkk 2019-10-19 01:59:11
我想实现这样的功能:asp.net页面上有个按钮,点击后能使用事务处理自动插入多条数据库记录。我使用参数化语句,代码如下:

Hashtable ht = new Hashtable(); //创建一个Hashtable实例
for (int i = 0; i < Month; i++)
{
string sy = "insert into ht_ysk(htbh,ysrq,ysje,czy,addtime) values(@htbh,@ysrq,@ysje,@czy,@addtime)";
var pay = new List<DbParameter>()
{
du.CreateDbParameter("@htbh",_htbh),
du.CreateDbParameter("@ysrq",d1.AddMonths(i)),
du.CreateDbParameter("@ysje",_yzj),
du.CreateDbParameter("@czy",_czy),
du.CreateDbParameter("@addtime",DateTime.Now)
};
ht.Add(sy, pay);
}
string cjg = du.ExecuteSqlTran(ht);
if (cjg == "ok")
{
Response.Write("<script>alert('批量添加成功!');location.href ='ht_ysk_list.aspx?id=" + _htbh + "';</script>");
Response.End();
}
else
{
Response.Write("<script>alert('执行失败。" + cjg + "');location.href ='ht_ysk_list.aspx?id=" + _htbh + "';</script>");
Response.End();
}


执行后报告错误:已添加项。字典中的关键字:“insert into ht_ysk(htbh,ysrq,ysje,czy,addtime) values(@htbh,@ysrq,@ysje,@czy,@addtime)”所添加的关键字:“insert into ht_ysk(htbh,ysrq,ysje,czy,addtime) values(@htbh,@ysrq,@ysje,@czy,@addtime)”

如何解决?

...全文
326 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鱼> 2019-10-19
  • 打赏
  • 举报
回复
你的key明显是相同的,这个时候不应该用哈希表来存储,只要需要唯一值判定的集合都不可以的。如: Dictionary;HashMap。不过你可以这样写,将你这块代码封装成对象

string sy = "insert into ht_ysk(htbh,ysrq,ysje,czy,addtime) values(@htbh,@ysrq,@ysje,@czy,@addtime)";
                var pay = new List<DbParameter>()
                {
                    du.CreateDbParameter("@htbh",_htbh),
                    du.CreateDbParameter("@ysrq",d1.AddMonths(i)),
                    du.CreateDbParameter("@ysje",_yzj),
                    du.CreateDbParameter("@czy",_czy),
                    du.CreateDbParameter("@addtime",DateTime.Now)
                };
然后存储到List<T>里面。 或者你使用楼上所说的Tuple,不过这个Tuple必须是.NET 4.0的框架下才支持
github_36000833 2019-10-19
  • 打赏
  • 举报
回复
string sy作为key每次都是一样的,当然哈希表会抛出错误。 其实你的需求跟哈希表没有关系。用错数据容器了。 用类似List<MyCommand>就可以了,MyCommand也可以是Tuple<string, List<DbParameter>>等等。 struct MyCommand { public string Cmd; public List<DbParameter> Parameters; }

62,025

社区成员

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

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

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

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