我已经下载了 VB 2010 的试用版,并制作了一个连接到 Access 2007 MDB 文件的小型应用程序。
有几个地方出了问题:
如果我尝试发布它,然后运行生成的安装文件,它会说找不到 .MDB 文件。
如果我在开发过程中运行它 (F5),它运行良好,并且当我将新数据输入 DataGridView 时,我知道它会被保存,因为当我关闭 session 并再次按 F5 时,新输入的数据会被保存。仍然存在。 (更新数据的相关代码很简单):
Me.Validate() Me.MenuItemsBindingSource.EndEdit() Me.MenuItemsTableAdapter.Update(Me.MenuOrdersDataSet.MenuItems) Me.MenuOrdersDataSet.AcceptChanges()
但是,如果我关闭整个项目并重新运行它并查看 DataGridView,或者如果我手动查看 .MDB 文件,它就不再包含新输入的数据。
这是我的连接代码:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.MenuItemsTableAdapter.Fill(Me.MenuOrdersDataSet.MenuItems)
Dim con As New OleDb.OleDbConnection
Dim dbString As String
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
dbString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MenuOrders.accdb"
con.ConnectionString = dbString
con.Open()
sql = "SELECT * FROM MenuItems"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "MenuItems")
con.Close()
End Sub
怎么了?这些问题是否与试用版有关,或者是否还有其他一些我应该注意的明显问题?
最佳答案
最终执行了以下操作来修复它。
在解决方案资源管理器中,我打开 App.config 并将数据库的绝对路径放入 connectionStrings
标记中,替换默认的 |DataDirectory|
文本。
不确定这是否是最好的做法..但它有效!
<connectionStrings>
<add name="MenuSystem.My.MySettings.MenuDBConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Administrator\Documents\MenuDB.accdb"
providerName="System.Data.OleDb" />
</connectionStrings>
关于database - 简单的 VB 2010 应用程序不将数据保存到 Access 2007,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13513123/