Foxtable(狐表)用户栏目专家坐堂 → Sqlcommand 循环执行问题


  共有3790人关注过本帖树形打印复制链接

主题:Sqlcommand 循环执行问题

帅哥,在线噢!
z769036165
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:762 积分:5456 威望:0 精华:0 注册:2012/10/5 21:53:00
Sqlcommand 循环执行问题  发帖心情 Post By:2021/7/23 14:16:00 [只看该作者]

以下这样操作,在昨天在内部函数里面可以执行,今天又不可以执行
Dim cmd As new SQLCommand
cmd.Connectio nName = "hh"
For Each dr As System.Data.DataRow In dt.Rows
    cmd.CommandText = "Insert Into pt(" & lb & ") Values(" & yw & ")"
    For Each ds As System.Data.DataColumn In dt.Columns 
        Select Case ds.ColumnName
            Case "LDATE"
                cmd.Parameters.Add("@" & ds.ColumnName ,dr(ds.ColumnName))
            Case Else
                cmd.Parameters.Add("@" & ds.ColumnName ,dr(ds.ColumnName).tostring)
        End Select
    Next
    cmd.ExecuteNonQuery
Next


---------------------------
版本:2021.5.29.1
---------------------------
代码执行出错,错误信息:

System.ArgumentException: 已添加了具有相同键的项。

   在 System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)

   在 System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)

   在 UserCode.Test()



结果出现如上的错误,但是cmd放在里面,如下:

For Each dr As System.Data.DataRow In dt.Rows
    Dim cmd As new SQLCommand
    cmd.Connectio nName = "hh"
    cmd.CommandText = "Insert Into pt(" & lb & ") Values(" & yw & ")"
    For Each ds As System.Data.DataColumn In dt.Columns 
        Select Case ds.ColumnName
            Case "LDATE"
                cmd.Parameters.Add("@" & ds.ColumnName ,dr(ds.ColumnName))
            Case Else
                cmd.Parameters.Add("@" & ds.ColumnName ,dr(ds.ColumnName).tostring)
        End Select
    Next
    cmd.ExecuteNonQuery
Next

这样就不报错了,这是什么情况?cmd.CommandText = “值”后,有时清空了之前的设置参数,有时又没有清空?
[此贴子已经被作者于2021/7/23 14:17:14编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/23 14:28:00 [只看该作者]

添加的参数重复了
Dim cmd As new SQLCommand
cmd.Connectio nName = "hh"
For Each dr As System.Data.DataRow In dt.Rows
    cmd.CommandText = "Insert Into pt(" & lb & ") Values(" & yw & ")"
cmd.Parameters.clear
    For Each ds As System.Data.DataColumn In dt.Columns 

 回到顶部