2009-04-30 62 views
1

我在寫一個桌面應用程序,它需要一個簡單的持久層 - 我發現了關於SubSonic和它能夠使用SQLite的能力。不過,我需要將數據庫文件保存在用戶的AppData文件夾中,而不知道如何將這樣的值放到app.config中 - 我不想使用絕對路徑。SubSonic SQLite連接字符串

app.config能以某種方式訪問​​環境變量或引用應用程序數據文件夾嗎?

回答

1

沒有辦法在app.config中爲連接字符串指定AppData文件夾。

但是你可以做的是在安裝過程中或者第一次運行應用程序時將值寫入配置文件。

+0

你能寫/鏈接一個例子如何做到這一點? – dahpgjgamgan 2009-04-30 18:08:02

+0

您可以使用ConfigurationManager類讀取/寫入配置文件。 示例:http://social.msdn.microsoft.com/forums/en-US/winforms/thread/f26d0863-06be-45c1-b42d-e0816dc9eb58/ MSDN文檔:http://msdn.microsoft.com /en-us/library/system.configuration.configurationmanager.aspx – 2009-04-30 18:32:47

0

找到應用程序數據的「框架的方法」就是用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

這將找到正確的應用程序數據路徑與平臺無關。

0

有幾種方法,如果你正在使用ASP.NET,在任何一種語言

使用Server.Mappath(「〜」)將返回應用程序的完整路徑名,那麼你只需要添加的根「/ app_data「來獲得你的完整路徑。

或者檢查HttpContext.Current.Request和HttpContext.Current.Application 有許多(和更好的話,我剛纔提到的)性質將爲您提供相同的文件夾 - 作爲應用程序的根目錄下完整的路徑。

請注意,即使你有應用程序的虛擬文件夾,以及與應用常規文件夾,這些都應該在工作IIS配置文件夾上

然而,這僅僅是在運行時可能的,所以它不能真的在app.config中提到。你可以嘗試使用來自app.config駐留IE「../App_Data」或「/ App_data」的關聯路徑,但我不確定你是否是確切的需求。

好運

2

亞音速V2.X我會忽略在app.config連接字符串和使用數據庫之前設置它在運行時。當然,提供者名稱保持不變。

string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"MyApplication\Northwind.db3"); 

DataService.Providers["Northwind"].DefaultConnectionString = 
      String.Format(@"Data Source={0};Version=3;New=False;Connection Timeout=3", dbPath);