VB.NET - .accdb数据库不保存更改

时间:2015-03-12 00:17:54

标签: database vb.net datagridview

我无法弄清楚为什么我的代码不会保存到我的.accdb数据库。

我从.accdb数据库文件中获取数据并将其显示在DataGridView中,然后允许对其进行更改。 (这是一个库存控制系统。)进行更改后,用户应该能够将数据发回,以便将其保存在.accdb文件中。

我到处都在网上看过,尝试了多种不同的方法。这是我目前用来解决问题的方式,但是在运行代码时它不会保存到.accdb文件中。 (但是,它没有错误。)

Public Class Database
Dim datatable As DataTable
Dim adapter As OleDb.OleDbDataAdapter
Dim dbCon As New OleDb.OleDbConnection
Dim dbProvider As String = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
Dim dbRsrc As String = "Data Source =" & System.IO.Directory.GetCurrentDirectory & "/Resources/List.accdb"
Dim binding As BindingSource
Dim cmdBuilder As OleDb.OleDbCommandBuilder

Private Sub Database_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    dbCon.ConnectionString = dbProvider & dbRsrc
    dbCon.Open()
    adapter = New OleDb.OleDbDataAdapter("Select * FROM List", dbCon)
    datatable = New DataTable
    adapter.FillSchema(datatable, SchemaType.Source)
    adapter.Fill(datatable)
    binding = New BindingSource
    binding.DataSource = datatable
    dbCon.Close()
    StockTable.DataSource = binding
End Sub

Private Sub SaveBtn_Click(sender As Object, e As EventArgs) Handles SaveBtn.Click
    'insert validation here
    Try
        dbCon.ConnectionString = dbProvider & dbRsrc
        dbCon.Open()
        cmdBuilder = New OleDb.OleDbCommandBuilder(adapter)
        adapter.AcceptChangesDuringUpdate = True
        adapter.Update(datatable)
        dbCon.Close()
    Catch ex As Exception
        MsgBox(ex.Message.ToString() & " Save Unsuccessful.")
    End Try
End Sub 
End Class

不知道我哪里出错了 - 当我点击'保存'按钮时,它应该连接到数据库,构建一个SQL查询来更新它,然后更新我的数据表+ .accdb数据库,对吧? 为了测试它,我尝试编辑多个列并保存它,但是在打开文件时它仍然显示与之前相同的值。

有任何建议/指示吗?我是VB.NET的新手,大约3个月前学会了它,并且刚刚开始全面了解它。

1 个答案:

答案 0 :(得分:1)

非常感谢帮助我达成这个答案的用户“jmcilhinney”。我没有意识到我的代码正在运行,我感到非常愚蠢。

我用过

Debug.WriteLine("Update value: " & adapter.Update(datatable))
Debug.WriteLine("Connection str: " & dbProvider & dbRsrc)

发现我的更新命令有效,而实际上我的数据库文件的输出位于/ bin /文件夹中。我没有意识到它使用了/ bin /文件夹,并且正在使用.VB文件查找根文件夹等。