我无法弄清楚为什么我的代码不会保存到我的.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个月前学会了它,并且刚刚开始全面了解它。
答案 0 :(得分:1)
非常感谢帮助我达成这个答案的用户“jmcilhinney”。我没有意识到我的代码正在运行,我感到非常愚蠢。
我用过
Debug.WriteLine("Update value: " & adapter.Update(datatable))
Debug.WriteLine("Connection str: " & dbProvider & dbRsrc)
发现我的更新命令有效,而实际上我的数据库文件的输出位于/ bin /文件夹中。我没有意识到它使用了/ bin /文件夹,并且正在使用.VB文件查找根文件夹等。