Sql server 2005 插入数据网格视图数据时出错

Sql server 2005 插入数据网格视图数据时出错,sql-server-2005,Sql Server 2005,先生, 我正在尝试将数据插入数据库 我使用vb2008和sql作为后端 错误是“变量名'@Item'已声明。变量名在查询批处理或存储过程中必须是唯一的。” 这是我的密码 Private Sub ButtonSubmit_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSubmit.Click con = New SqlConnection(s) c

先生, 我正在尝试将数据插入数据库 我使用vb2008和sql作为后端

错误是“变量名'@Item'已声明。变量名在查询批处理或存储过程中必须是唯一的。”

这是我的密码

Private Sub ButtonSubmit_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSubmit.Click

        con = New SqlConnection(s)
        con.Open()

        sql = "INSERT INTO TableSpecial (RequestNo, RegNo, JobNumber, Kilometer, Preparedby, GzlNo, Chassis, Engine, VehicleType, Division, Createdby, Date) VALUES (@RequestNo, @RegNo, @JobNumber, @Kilometer, @Preparedby, @GzlNo, @Chassis, @Engine, @VehicleType, @Division, @Createdby, @Date)"
        cmd = New SqlCommand(sql, con)


        cmd.Parameters.Add("@RequestNo", SqlDbType.NChar).Value = Trim(LabelReqNo.Text)
        cmd.Parameters.Add("@RegNo", SqlDbType.NChar).Value = Trim(ListBoxRegNo.SelectedItem)
        cmd.Parameters.Add("@JobNumber", SqlDbType.NChar).Value = Trim(TextBoxJobNo.Text)
        cmd.Parameters.Add("@Kilometer", SqlDbType.NChar).Value = Trim(TextBoxKM.Text)
        cmd.Parameters.Add("@Preparedby", SqlDbType.NChar).Value = Trim(TextBoxReqby.Text)
        cmd.Parameters.Add("@Createdby", SqlDbType.NChar).Value = Trim(TextBoxPreparedby.Text)
        cmd.Parameters.Add("@GzlNo", SqlDbType.NChar).Value = Trim(LabelGzlNo.Text)
        cmd.Parameters.Add("@Division", SqlDbType.NChar).Value = Trim(LabelDivision.Text)
        cmd.Parameters.Add("@Chassis", SqlDbType.NVarChar).Value = Trim(LabelChassis.Text)
        cmd.Parameters.Add("@Engine", SqlDbType.NVarChar).Value = Trim(LabelEngine.Text)
        cmd.Parameters.Add("@VehicleType", SqlDbType.NVarChar).Value = Trim(LabelVehicleType.Text)
        cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = LabelTime.Text


        For Each row As DataGridViewRow In DataGridView1.Rows

            If Not row.IsNewRow Then

                For i As Integer = 0 To DataGridView1.RowCount - 1

                    cmd.Parameters.Add("Item", SqlDbType.NVarChar).Value = Me.DataGridView1.Rows(i).Cells("Itemm").Value
                    cmd.Parameters.Add("Qty", SqlDbType.NChar).Value = Me.DataGridView1.Rows(i).Cells("Qtyy").Value



                Next
                'cmd.Parameters.Add("@Item", SqlDbType.NVarChar).Value = row.Cells(0).Value.ToString
                ' cmd.Parameters.Add("@Qty", SqlDbType.NChar).Value = row.Cells(1).Value.ToString

            End If

        Next
        Dim result As Integer

        result = cmd.ExecuteNonQuery()

        If result = 1 Then
            MsgBox("Saved!!", MsgBoxStyle.Information, _
                   "Success")

        Else
            MsgBox("Updation incomplete!!", MsgBoxStyle.Information, _
                   "Updation not complete")
        End If
        con.Close()
        Autogenerate_ReqNo()

    End Sub

不能在一条insert values语句中插入多条记录。每行需要调用一次execute语句。在这种情况下,循环中的每个调用都使用相同的cmd对象。对于循环中的第一次迭代,这是可以的,但是对于第二次和所有后续迭代,cmd对象已经添加了一个名为“item”的参数。您需要清除循环中的命令参数。尝试在循环开始处添加cmd.Parameters.Clear()。

单独插入,如果使用相同的SQLCommand对象,则在每次插入之间使用

cmd.Parameters.Clear()