vb.net保存记录后处理DB Connection

时间:2014-08-29 17:24:45

标签: vb.net ms-access

我有一个后端Access DB的前端视图。我有一个保存和更新按钮。每当我使用下面的保存代码时,它工作并将记录添加到我的数据库并在datagridview中正确显示,如果我点击新创建的记录上的更新按钮,似乎记录仍然处于访问的“编辑”模式当我尝试更新记录时给我一个并发错误。我在下面保存后是否必须处理连接,如果可以,您是否可以告诉我如何处理该连接或关闭访问数据库中的记录?唯一能解决的问题是将application.restart()添加到我的保存按钮的末尾,我真的不想这样做。

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
        If tbAEU.Text = "" Or cbIA.Text = "" Or cbCI.Text = "" Or tbS.Text = "" Or tbD.Text = "" Then
            MessageBox.Show("Please do not leave any field blank", "Validation")
            Return
        End If
        cbAdded.Text = "No"
        If intInc <> -1 Then

            Dim cb As New OleDb.OleDbCommandBuilder(da)
            Dim dsNewRow As DataRow

            dsNewRow = ds.Tables("SDMDB").NewRow()

            dsNewRow.Item("AffectedEndUser") = tbAEU.Text
            dsNewRow.Item("IncidentArea") = cbIA.Text
            dsNewRow.Item("ConfigItem") = cbCI.Text
            dsNewRow.Item("Summary") = tbS.Text
            dsNewRow.Item("Description") = tbD.Text
            dsNewRow.Item("ActivityLog") = tbAL.Text
            dsNewRow.Item("AddedtoSDM") = cbAdded.Text

            ds.Tables("SDMDB").Rows.Add(dsNewRow)

            da.Update(ds, "SDMDB")

            MessageBox.Show("New Record added to the Database", "Save")

            btnSave.Enabled = False
            btnAdd.Enabled = True
            btnDelete.Enabled = False
            btnPWReset.Enabled = True
            btnUnlock.Enabled = True
            btnEdit.Enabled = True
            btnCancel.Enabled = False
            cbIA.Enabled = False
            cbCI.Enabled = False
            SetAllAsReadOnly()
            UpdateDatabase()
            Me.Refresh()
            moveforward()
            movebackward()
        End If
    End Sub

连接代码:

strDbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
            Dim sDrive As String, sDrives() As String
            sDrives = ListAllDrives()
            For Each sDrive In sDrives
                Dim strTemp As String = sDrive & "\AppData\SDMDB\SDMDB.mdb"
                If File.Exists(strTemp) Then
                    strDbSource = "Data Source = " & strTemp
                End If
            Next
            con.ConnectionString = strDbProvider & strDbSource

            con.Open()

            strSQL = "SELECT * FROM SDM_Details"
            da = New OleDb.OleDbDataAdapter(strSQL, con)
            da.Fill(ds, "SDMDB")

            con.Close()

1 个答案:

答案 0 :(得分:2)

正如Codexer先生所说,您可能希望使用Using声明处理您的连接。

我希望您真正想要的是在成功保存后致电ds.AcceptChanges()。这使得DataSet和相应的表知道记录不再是脏的。