如何使用datagrid将数据插入数据库

时间:2014-04-06 01:59:00

标签: vb.net datagridview

我想使用数据网格视图将数据插入到我的SQL服务器数据库。我向网格添加了一些数据,需要使用for循环提交它们。

Dim i, rowCount As Integer
rowCount = dgOrder.Rows.Count

For i = 0 To (rowCount - 1)
    objcon.DoExecute("INSERT INTO OrderMF (ItemType,ItemNm,UnitPrice,Quantity,Discount,TotalValue,FreeItem)VALUES('" _
                        & dgOrder.Item(i, 1).Value & "','" _
                        & dgOrder.Item(i, 0).Value & "','" _
                        & txtOrdNo.Text & "','" _
                        & dgOrder.Item(i, 3).Value & "','" _
                        & dgOrder.Item(i, 2).Value & "','" _
                        & dgOrder.Item(i, 5).Value & "','" _
                        & dgOrder.Item(i, 4).Value & "','" _
                        & dgOrder.Item(i, 6).Value & "')")
    If objcon.m_Success = "0" Then
        MsgBox("Record Added Successfully", MsgBoxStyle.Information, "ROBBIALAK")
        Call ClearFields1()
        cmdOrder.Enabled = False
    End If
Next

这是我点击按钮的代码。但是它不适合我。它正在获得一个例外,说“索引超出范围。必须是非负数且小于集合的大小,参数名称:在这段代码中,dgorder是我的datagridview名称,我使用方法调用DoExecute来执行SQL String.please帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

反对直觉,.Item(columnIndex, rowIndex)不是.Item(rowIndex, columnIndex)。幸运的是还有.Item(columnName, rowIndex)我建议你使用它,因为这会增加可读性。所以我认为你应该改变

dgOrder.Item(i, 1).Value

dgOrder.Item("ItemType", i).Value

(如果列名是" ItemType")等等。

此外,您似乎尝试插入的值多于指定的列

  1. ItemType,
  2. ItemNm,
  3. UnitPrice,
  4. 数量,
  5. 折扣,
  6. TotalValue,
  7. FreeItem - 7列

    1. dgOrder.Item(i,1).Value& "''" _

    2. &安培; dgOrder.Item(i,0).Value& "''" _

    3. &安培; txtOrdNo.Text& "''" _

    4. &安培; dgOrder.Item(i,3).Value& "''" _

    5. &安培; dgOrder.Item(i,2).Value& "''" _

    6. &安培; dgOrder.Item(i,5).Value& "''" _

    7. &安培; dgOrder.Item(i,4).Value& "''" _

    8. &安培; dgOrder.Item(i,6).Value& "' - 8个值