我需要在app.config中设置sqlite连接字符串。我想设置相对于调试/发布文件夹的路径,将数据库文件复制到这些文件夹。
<add name="EmailsSQLite" connectionString="data source=c:\Users\Test\Documents\Visual Studio 2008\Projects\TestConsole\Emails\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>
我希望有类似的东西:
<add name="EmailsSQLite" connectionString="data source=\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>
这可能吗?
答案 0 :(得分:15)
您可以按照Lefty的回答中所述指定相对路径。
但是这将与当前工作目录相关,当前工作目录不一定是包含可执行文件的目录。
这样做的一种方法是在使用之前修改连接字符串,例如
在app.config中:
connectionString="data source={AppDir}\data\EmailDatabase.sqlite
在您的代码中:
ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name];
if (c == null)
{
... handle missing connection string ...
}
string fixedConnectionString = c.ConnectionString.Replace("{AppDir}", AppDomain.CurrentDomain.BaseDirectory);
... use fixedConnectionString
答案 1 :(得分:4)
尝试使用“。”在字符串的数据源部分中的第一个反斜杠之前。
例如
data source=.\data\EmailDatabase.sqlite
答案 2 :(得分:4)
是的,这是可能的。尝试使用| DataDirectory |。
在App.config中
<add name="SqliteConnectionString" connectionString="Data Source=|DataDirectory|\Database.sqlite;" providerName="System.Data.SQLite"/>
此页面上的更多信息 https://msdn.microsoft.com/en-us/library/cc716756.aspx