【发布时间】:2014-12-31 16:04:45
【问题描述】:
我即将放弃...我正在将 DataAdapters 与连接的 Access 数据库一起使用(测试正常),数据集更新正常,但位于我的项目根文件夹中的数据库永远不会更新我尝试插入或删除。这是我正在处理的删除操作;
Private Sub btnDeleteJob_Click(sender As Object, e As System.EventArgs) Handles btnDeleteJob.Click
Dim delJobID = ComboBox2.SelectedValue
Dim delJobRowAdpt As New DCGDataSetTableAdapters.MainTableAdapter
Dim delJobRow As DCGDataSet.MainRow
Dim intDelete As Integer
delJobRow = DCGDataSet.Main.FindByID(delJobID)
delJobRow.Delete()
intDelete = delJobRowAdpt.Update(DCGDataSet.Main)
If intDelete = 1 Then
MessageBox.Show("Job Deleted")
'comboClear()
clearTabOne()
'ComboBox2.SelectedValue = -1
Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
Else
MessageBox.Show("Job Failed to Delete")
End If
ComboBox2.SelectedValue = -1
End Sub
还有我的插入代码;
Private Sub btnAddNew_Click(sender As Object, e As System.EventArgs) Handles btnAddNew.Click
' Add new Job to the database
Dim newJobRow As New DCGDataSetTableAdapters.MainTableAdapter
Dim intInsert As Integer
Dim jobText = txtBoxAddNewJob.Text
intInsert = newJobRow.InsertJob(jobText) 'InsertJob Adapter = INSERT INTO `Main` (`tbl_Job_Name`) VALUES (?)
If intInsert = 1 Then
MessageBox.Show("New Job Added")
' Update the comboBox values
newJobRow.Fill(DCGDataSet.Main)
'Me.MainTableAdapter.Fill(Me.DCGDataSet.Main)
'newJobRow.Insert(jobText)
newJobRow.Update(DCGDataSet.Main)
'DCGDataSet.AcceptChanges()
txtBoxAddNewJob.Text = ""
clearTabOne() ' Label5.Visible = False ComboBox3.Visible = False
Else
MessageBox.Show("Job Not Added")
End If
End Sub
这是我的数据集
如果我关闭我的应用程序并打开 Bin/Debug 文件夹中的数据库文件,更改就在那里,但直到我再次运行该应用程序。我知道我很接近了,但我被困住了,我需要另一双眼睛......
【问题讨论】:
-
位于我的项目根文件夹中的数据库永远不会更新这里有些令人困惑。
-
数据源 .accdb 文件本身位于项目文件夹 C:\Users\mgfranz\Documents\Visual Studio 2010\Projects\DCG 中。奇怪的是(或者正常),在 C:\Users\mgfranz\Documents\Visual Studio 2010\Projects\DCG\DCG 中有另一个 db 副本,在 C:\Users\mgfranz\ 中还有另一个副本Documents\Visual Studio 2010\Projects\DCG\DCG\bin\Debug.
-
最后一个是将属性复制到输出目录设置为与从不复制不同的值的效果。在这种情况下,如果满足复制到输出目录中的条件,您的数据库将被复制到输出目录。输出目录在您的项目属性中定义,可以随意更改。所以也许那里已经改变了一些东西。请记住,除非您在项目的属性中更改它,否则您的程序(WinForms)是从输出目录执行的,因此您的相对路径应该能够适应这种情况
-
我明白,我的属性设置为 Copy if Newer 是有道理的。但是是否可以完成更改并将其保存到项目根目录中的实际数据库中?现在,每次对数据库进行更改时,我都必须将 .accdb 从 Bin 复制到 Project\DCG\DCG。
-
是的,在 app.config ConnectionString 部分设置正确的路径。 (附带说明一下,Access 会在打开 accdb 文件时更改其时间戳。无需对数据或架构进行实际更改)