我在项目中使用Microsoft Access数据库;保存到bin文件夹。当文件路径发生更改时,我能做些什么来确保与该数据库的连接?
导入System.Data.OleDb公共类Form3
Dim con As New OleDb.OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim str1作为字符串
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersAARVIIIDocumentsDATABASEMP1.accdb"
您的连接字符串将数据库定位在仅在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 的更多信息
DataDirectory在哪里
记录的DataDirectory
是的,您应该使用:
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "MP1.accdb"
并将数据库文件放在启动.exe的同一文件夹中…
我使用这个简单的代码,可以将文件夹移动到的任何位置
conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..myDatabase.mdb"
请确保将访问文件保存在bin文件夹中,以便此连接字符串正常工作。