App.config连接字符串相对路径

Rad*_*u D 14 .net sqlite configuration connection-string app-config

我需要在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"/>
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西:

<add name="EmailsSQLite" connectionString="data source=\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>
Run Code Online (Sandbox Code Playgroud)

那可能吗?

Joe*_*Joe 15

您可以指定Lefty的答案中描述的相对路径.

但是,这将与当前工作目录相关,当前工作目录不一定是包含可执行文件的目录.

解决此问题的一种方法是在使用之前修改连接字符串,例如

在app.config中:

 connectionString="data source={AppDir}\data\EmailDatabase.sqlite
Run Code Online (Sandbox Code Playgroud)

在你的代码中:

ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name];    
if (c == null)
{
    ... handle missing connection string ...
}
string fixedConnectionString = c.ConnectionString.Replace("{AppDir}", AppDomain.CurrentDomain.BaseDirectory);
... use fixedConnectionString
Run Code Online (Sandbox Code Playgroud)


blu*_*hal 7

对的,这是可能的。尝试使用 |DataDirectory|。

在 App.config 中

<add name="SqliteConnectionString" connectionString="Data Source=|DataDirectory|\Database.sqlite;" providerName="System.Data.SQLite"/>
Run Code Online (Sandbox Code Playgroud)

有关此页面的更多信息 https://msdn.microsoft.com/en-us/library/cc716756.aspx

  • 这是用于您项目中的 SQLite 文件吗?您可能必须将文件的 Build Action 设置为 content 以便将其复制到 debug/bin 或 release/bin 以使其正常工作 (3认同)

Lef*_*fty 5

尝试使用“。” 在字符串的数据源部分中的第一个反斜杠之前。

例如。

data source=.\data\EmailDatabase.sqlite
Run Code Online (Sandbox Code Playgroud)

  • 如果 db 不存在,您将收到此错误:`发生文件激活错误。物理文件名“.\Database.mdf”可能不正确。诊断并更正其他错误,然后重试该操作。创建数据库失败。无法创建列出的某些文件名。检查相关错误。`但在完整路径方法中,它将为您创建数据库。 (2认同)