【发布时间】:2014-04-04 00:43:02
【问题描述】:
表单上有一个datagridview和一个按钮。相同的按钮将数据加载到 datagridview 中(如果 Button1.Text = "CHANGE DATABASE" Then)并保存更改。一切正常,直到再次单击按钮以加载数据,然后在上次加载后再次加载数据库(如果数据库有 3 行,则再次显示这 3 行,并在每次单击按钮时再次在 datagridview 中显示 - 重复但不在 Access 文件中在数据网格视图中)。
我第二次单击更新更改数据库时收到此错误:并发冲突。
Imports System.Data.OleDb
Public Class Form1
Dim DataSet1 As New DataSet()
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\PD_D.mdb"
Dim SQLString As String = "SELECT * FROM DIV"
Dim OleDBConn1 As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(ConnString)
Dim OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter(SQLString, OleDBConn1)
Using OleDBConn1
If Button1.Text = "CHANGE DATABASE" Then
OleDbDataAdapter1.Fill(DataSet1, "DIV")
DataGridView1.DataSource = DataSet1.Tables("DIV")
Button1.Text = "UPDATE CHANGES"
Button1.ForeColor = Color.DarkRed
Else
If DataSet1.HasChanges Then
Using con = New OleDbConnection(ConnString)
Me.Validate()
Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(OleDbDataAdapter1)
OleDbDataAdapter1.SelectCommand = New OleDbCommand(SQLString, con)
OleDbDataAdapter1.DeleteCommand = builder.DataAdapter.DeleteCommand
OleDbDataAdapter1.InsertCommand = builder.DataAdapter.InsertCommand
OleDbDataAdapter1.UpdateCommand = builder.DataAdapter.UpdateCommand
OleDbDataAdapter1.Update(DataSet1.Tables("DIV").GetChanges())
End Using
Else
'OleDBConn1.Close()
GoTo ext
End If
ext:
'
Button1.Text = "CHANGE DATABASE"
Button1.ForeColor = Color.Black
End If
End Using
End Sub
【问题讨论】:
-
这是一个 VB.NET 问题。我正在更改标签。
-
现在不鼓励使用 GoTo 语句。我还建议更改更新数据库的方式。根据文本显示的内容进行更新并不是最佳做法。
-
@Alex 然而,问题在于我是否在代码的第一部分使用相同的按钮或表单加载以及数据库更新的按钮。你能帮我解决我遇到的错误和数据乘法吗?
标签: vb.net datagridview