当源文件路径发生更改时,如何在项目中保持数据库连接



我在项目中使用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文件夹中,以便此连接字符串正常工作。

相关内容

最新更新