2011-02-15 162 views
12

我需要在app.config中設置sqlite連接字符串。我想設置相對於debug/release文件夾的路徑,數據庫文件將被複制到這些文件夾中。App.config連接字符串相對路徑

<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"/> 

這可能嗎?

+2

試試這個:http://stackoverflow.com/questions/1833640/connection-string-with-relative-path數據庫文件#答案-6941582 – 2012-02-05 20:27:26

+0

@jo_asakura這不是一個重複的問題是關於一個SQL Server CE數據庫,而不是一個SQLite數據庫(我發佈此評論,因爲它只是在審查中出現隊列關閉爲重複)。 – 2016-10-01 10:26:23

回答

14

您可以指定一個相對路徑,如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 
4

嘗試使用「。」在字符串的數據源部分中的第一個反斜槓之前。

例如。

data source=.\data\EmailDatabase.sqlite 
+0

只有當你使用相對路徑(指向當前工作目錄)_before_你顯示任何文件打開/保存類型對話框切換cwd - 假設它被設置爲可執行路徑開始(這可能不是案件) – 2011-04-07 11:25:14

+1

如果db不存在,你會得到這個錯誤:`發生文件激活錯誤。物理文件名'。\ Database.mdf'可能不正確。診斷並更正其他錯誤,然後重試該操作。 CREATE DATABASE失敗。列出的某些文件名不能被創建。檢查相關的錯誤。「但在一個完整路徑的方法,它會爲你創建數據庫。 – Yar 2016-01-14 22:04:39

3

是的,它是可能的。嘗試使用| 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