我已经下载了VB 2010的试用版,并制作了一个连接到Access 2007 MDB文件的小应用程序。
有些事情出错:
如果我尝试发布它,然后运行生成的安装文件,则说它无法找到.MDB文件。
如果我在开发期间(F5)运行它,它运行正常,当我将新数据输入DataGridView时,我知道它会被保存,因为当我关闭会话并再次点击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
什么事?这些问题与试用版有关,还是有其他一些我应该注意的明显问题?
答案 0 :(得分:1)
我曾经有同样的问题,我想我通过将我的数据源/数据库复制到输出目录设置为“如果更新则复制”来修复它,位于MyDatabase的属性窗口中.mdf文件。
有时该选项可以默认为“Always”,这解释了每次运行应用程序时数据集重置的原因。
答案 1 :(得分:1)
最后做了以下修复。
在解决方案资源管理器中,我打开了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>