我有一个使用数据库的C#项目,目前数据库没有嵌入到exe或C#项目中。我使用以下路径:
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Anant\Documents\WebsiteSearch.accdb;
Persist Security Info=False;";
有什么方法可以将WebsiteSearch.accdb添加到项目中并相应地更改路径。这个想法是当有人在其他计算机上启动exe时,我不想总是改变数据库的路径。
答案 0 :(得分:1)
为此通常我们将数据库放在应用程序文件夹中。如果将数据库放在bin/debug
中,那么访问数据库总是很容易
你的代码会像这样转动
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=WebsiteSearch.accdb;
Persist Security Info=False;";
或者,
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source="+AppDomain.CurrentDomain.BaseDirectory+"WebsiteSearch.accdb;
Persist Security Info=False;";
答案 1 :(得分:1)
您可以使用相对路径
ConnectionString = "Data Source=|DataDirectory|\WebsiteSearch.accdb";
或在您的c#代码中
string executable = System.Reflection.Assembly.GetExecutingAssembly().Location;
string path = (System.IO.Path.GetDirectoryName(executable));
AppDomain.CurrentDomain.SetData("DataDirectory", path);
答案 2 :(得分:1)
您可以使用|DataDirectory|
:
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\WebsiteSearch.accdb; Persist Security Info=False;";
|DataDirectory|
是一个替换字符串,无需硬编码到数据库的完整路径。
然后可以调用AppDomain.SetData
在运行时设置其值,如果不这样,它将默认为应用程序的文件夹,因此最简单的选择是将数据库包含在与应用程序相同的文件夹中可执行文件。
答案 3 :(得分:0)
在解决方案资源管理器中,将accdb
文件标记为“内容”,并将其设置为“如果更新则复制”。
这将确保数据库始终存在。
答案 4 :(得分:0)
如果您每次都重新编译,那么您也可以将您的连接字符串放在app.config文件中,并将其部署到您的计算机上。每当您想要更改连接字符串时,您只需编辑配置文件,无需每次都重新编译代码。