我正在用 C# 开发一个数据库应用程序,我当前的连接字符串是
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Shop.accdb;Persist Security Info=False;"
如何修改它,使 db 在项目的文件夹中而不是在 D 中?我的意思是我打算将项目发送给朋友,所以我不想包含完整路径,而只是包含项目的文件夹。
先感谢您!
我正在用 C# 开发一个数据库应用程序,我当前的连接字符串是
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Shop.accdb;Persist Security Info=False;"
如何修改它,使 db 在项目的文件夹中而不是在 D 中?我的意思是我打算将项目发送给朋友,所以我不想包含完整路径,而只是包含项目的文件夹。
先感谢您!
将连接字符串更改为
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Shop.accdb;" +
"Persist Security Info=False;";
|DataDirectory|
是一个替换字符串(对于 WinForms 应用程序)将由框架设置为当前目录的值。
在代码中(在任何数据访问之前),它可以更改为您喜欢的内容
AppDomain.CurrentDomain.SetData("DataDirectory", @"D:\temp");
但是,请记住,如果您更改该值的原因是因为权限问题,那么将数据库存储在与程序相同的文件夹(C:\program 文件)中也会遇到同样的问题,因为该文件夹也被严重写入受限制的。最好的方法是将数据库存储在C:\PROGRAMDATA\<myAppDatabaseFolder>
string myFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
myFolder = Path.Combine(myFolder, "myAppDatabaseFolder);
AppDomain.CurrentDomain.SetData("DataDirectory", myFolder);
(我想您的设置过程会创建,MyAppDatabaseFolder
所以我没有检查文件夹是否存在)