从Datagridview添加,编辑和删除数据

时间:2017-07-04 21:36:12

标签: sql sql-server vb.net

我正在尝试将datagridview控件中的数据插入到我的SQL数据库中。代码如下:

Private Sub MCmdSoftwareSave_Click(sender As Object, e As EventArgs) Handles MCmdSoftwareSave.Click
    Dim ID As Integer
    Dim Name, Edition, Version, SubVersion As String
    Try
        SQLcmd.Connection = SQLconn
        SQLconn.Open()
        For row As Integer = 0 To Me.DgdSoftware.Rows.Count - 1
            ID = Me.DgdSoftware.Rows(row).Cells(0).Value
            Name = Me.DgdSoftware.Rows(row).Cells(1).Value
            Edition = Me.DgdSoftware.Rows(row).Cells(2).Value
            Version = Me.DgdSoftware.Rows(row).Cells(3).Value
            SubVersion = Me.DgdSoftware.Rows(row).Cells(4).Value
            SQLcmd.CommandText = "INSERT INTO Software(ID,Name,Edition,Version,SubVersion) VALUES('" & ID & "','" & Name & "','" & Edition & "','" & Version & "','" & SubVersion & "')"
            SQLcmd.ExecuteNonQuery()
        Next
        MsgBox("The infomration was successfully added to the Software database.", MsgBoxStyle.Information, "Successful Operation")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
        SQLconn.Close()
    End Try
End Sub

当表为空时,它会起作用,但它还会添加另一条记录,其中“ID”(主键)为0,并且在添加所需数据之前,该记录中的其余字段为空。

如果我然后尝试添加更多数据,我会收到一条消息,说我无法将数据添加到数据库中,其中保存的当前记录的ID与数据库中ID的ID相匹配(即它正在尝试重新保存现有数据进入表格。)

我想要做的是加载一个表格,其中表格中的所有数据都加载到datagridview控件中。然后,我想通过放入新记录,使用相同的datagridview控件添加到该表,而不需要代码尝试保存现有数据。我还希望能够编辑和删除datagridview控件中的数据。

有没有办法有效地做到这一点?

非常感谢,

詹姆斯

2 个答案:

答案 0 :(得分:4)

我能想到的最简单的方法是在datagridview中添加另一列,您可以将其视为该行是否已插入数据库的指示器。将其默认为0,并在for循环中检查以仅插入该列的值为0的行,然后将其更新为1。

您还应该查看using parameterized SQL queries

如果您将AllowUserToAddRows设置为True,则datagridview底部会有一个空行。您可以通过将for循环更改为从0到Me.DgdSoftware.Rows.Count - 2来解决此问题。

答案 1 :(得分:2)

补充@obl的答案,请阅读datagridview events文档。

您可以使用CellEndEdit事件标记一行,并在您点击保存按钮时知道是否需要删除或更新。