2015-09-03 84 views
3

我有一个使用数据库的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时,我不希望总是改变数据库的路径。

回答

1

对于这个通常我们把数据库放在应用程序文件夹本身。如果你把DB在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

您可以使用相对路径

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); 
0

在解决方案资源管理器中将accdb文件标记为“内容”,并将其设置为“如果较新则复制”。

这将确保数据库始终在那里。

1

您可以使用|DataDirectory|

connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\WebsiteSearch.accdb; Persist Security Info=False;"; 

|DataDirectory|是无需硬编码的完整路径DATEBASE替换字符串。

你可以调用AppDomain.SetData在运行时将其值设置,如果你不这样做,将默认为应用程序的文件夹,所以最简单的办法是包括在同一文件夹作为可执行的应用数据库。

0

如果您每次都重新编译,那么您也可以将连接字符串放在app.config文件中,并将其部署到您的机器上。无论何时您想更改连接字符串,您都可以简单地编辑配置文件,无需每次重新编译代码。