【发布时间】:2017-07-04 21:36:11
【问题描述】:
我正在尝试将 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 匹配(即它正在尝试重新保存现有数据到表中)。
我想要做的是加载一个表单,其中表中的所有数据都加载到 datagridview 控件中。然后,我希望能够通过放入新记录来使用相同的 datagridview 控件添加到该表,而无需代码尝试保存现有数据。我还希望能够编辑和删除 datagridview 控件中的数据。
有什么方法可以有效地做到这一点?
非常感谢,
詹姆斯
【问题讨论】:
-
永远不要连接字符串来生成 SQL - 使用 SQL 参数。它避免了许多可以避免的问题......而且它更简单。如果您使用数据源,则不需要这些 - NET 对象将为您更新数据库
-
我已将数据源设置为我的表 (SoftwareBindingSource),但它不会自动更新。
-
它正在尝试 - 这就是您收到错误的原因。当您对数据进行更改时,它会自动更新基础表。然后使用 DataAdapter 将所有更改(1 到 1,000)发送到 DB 不需要新的 SQL - NET 对象是 smart
-
@Plutonix 啊,很公平,我不知道。我将如何使用数据适配器发送数据,我假设一些由按钮触发的代码?
标签: sql sql-server vb.net