我在项目中使用 Microsoft Access数据库;保存到bin文件夹。当文件路径发生变化时,我该怎么做才能确保与该数据库的连接?
导入System.Data.OleDb 公共类Form3
Dim con As New OleDb.OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim str1 As String
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AARVIII\Documents\DATABASE\MP1.accdb"
答案 0 :(得分:4)
您的连接字符串将数据库定位在仅在您的PC上有效的固定位置 一个简单的解决方法是使用 | DataDirectory | 替换字符串。
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=|DataDirectory|\MP1.accdb"
通过这种方式,您可以通过代码控制数据库的位置 通常(对于桌面应用程序) | DataDirectory | 替换字符串指向您安装应用程序的同一文件夹,但是您需要具有写入其中的权限,并且任何类型的活动数据库都需要写入权限。它的文件。所以这不是数据库文件的最佳位置。
但是,您可以使用这样的代码更改DataDirectory指向的位置。 (当然是在尝试与数据库交谈之前就已经提到了它)
' Prepare a string pointing to a subfolder of the common application data
Dim appFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
Dim dbFolder = Path.Combine(appFolder, "MyAppFolder")
' Create the folder if it doesn't exist.
Directory.CreateDirectory(dbFolder)
' Change the substitution string kept by DataDirectory
AppDomain.CurrentDomain.SetData("DataDirectory", dbFolder)
现在,您的数据库的目标目录将是C:\ programdata \ myappfolder,其中您的应用程序具有读/写权限
有关DataDirectory的更多信息
答案 1 :(得分:1)
是的,你应该使用:
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "MP1.accdb"
将数据库文件放在与启动.exe ...相同的文件夹中。
答案 2 :(得分:0)
我使用这个简单的代码,我可以移动文件夹
conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\myDatabase.mdb"
确保将访问文件保存在bin文件夹中,以使此连接字符串起作用。