2009-04-30 60 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);