2009-04-30 4 views
1

私は単純な永続性レイヤーを必要とするデスクトップアプリケーションを作成しています - 私はSubSonicについて知っており、SQLiteで動作することができました。しかし、私はデータベースのファイルをユーザーのAppDataフォルダに保存し、app.configにそのような値を入れる方法を知らないでください。絶対パスは使用したくありません。SQLiteのサブソニック接続文字列

app.configは環境変数や参照アプリケーションのデータフォルダに何らかの形でアクセスできますか?

答えて

1

接続文字列のapp.configにAppDataフォルダを指定する方法はありません。

しかし、インストール中またはアプリケーションの最初の実行時に、設定ファイルに値を書き込んでください。

+0

どうすればよいのでしょうか? – dahpgjgamgan

+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 –

0

APPDATAを見つけるの「フレームワークの方法は、」これは、プラットフォームに関係なく正しいAPPDATAパスを見つけるEnvironment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

を使用することです。

0

、いくつかの方法を使用して、ASP.NETを使用している場合は、いずれかの言語で

Server.MapPathのは、(「〜」)/」そして、あなただけ追加することができフルパス名としてアプリケーションのルートを返しますがありますapp_data "を入力すると完全なパスになります。

また同じフォルダを提供します、多くの(と私は今述べた1その後、はるかに良い)性質があるHttpContext.Current.RequestとHttpContext.Current.Application を検査 - として、アプリケーションのルートであることsフルパス。これらは、すべての作業では、仮想フォルダとしてアプリケーションを持っているし、アプリケーションとの定期的なフォルダは、そのフォルダ

にIISで構成しても、しかし、これは、実行時にのみ可能であるべきで、それができないことを

注意実際にはapp.configに記載されています。 app.configがIEの "../App_Data"または "/ App_data"に常駐する場所からrelaliveなパスを使用してみることもできますが、あなたには正確な要件があるかどうかはわかりません。亜音速バージョン2.x用

幸運

2

私は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); 
+0

参照http://stackoverflow.com/questions/2079781/how-can-i-tell-subsonic-2-to-use-a-different-config -ファイル – Rory