2009-06-30 7 views
2

私は、ユーザが実行時にログインページ上の異なるデータベースを切り替えることを許可したいと思います。Winforms - 実行時にConnectionStringを置換する

私は現在、アプリケーション設定ファイルにConnectionStringを格納しており、すべてのデータセットはこの設定を参照しています。

実行時にこの設定を変更しようとしましたが、これは不可能なようです。

これを行うにはどのような方法が最適ですか?

答えて

1

設定ファイルに2番目の接続文字列があるだけではありませんか?どのような種類のデータアクセスコードをセットアップしましたか?

+0

すべての私のデータセットは、(app.settingに格納されている)MyConnectionString –

+0

として自分れたconnectionStringを持っているが、すべてのデータセットが個別に設定ファイルからの値にアクセスしている問題ですか?その場合、接続文字列をデータセットに返す責任を負う単一のコードを作成し、そのコードに適切な接続文字列を読み込ませてください。 –

1

あなたが前に接続文字列を取得するConfigurationManager.RefreshSectionを呼び出すことで、ディスクからの接続文字列をピックアップしてコードを強制することができます。

ConfigurationManager.RefreshSection("connectionStrings"); 
string connectionString = ConfigurationManager.ConnectionStrings["someConnection"].ConnectionString; 
0

は暗号化されたデータベースですか?

大量のプライバシーを必要とするものでない場合は、ユーザーごとに接続文字列を保存できます。

例えば:

System.Properties.Default.MyConnectionString = "Blah"; 
System.Properties.Default.Save(); 

または

string myConnectionString = System.Properties.Default.MyConnectionString; 

EDIT:これらはもともとプロジェクトに行くことによってVSに設定することができます - >プロパティ - >設定と必ずユーザー」に入れて作ります"スコープ(アプリケーションスコープは間違っていない限り実行時に読み取り専用です)。

EDIT2:以下についてのコメント:

SqlConnection myConnection = new SqlConnection(); 
//Set from a normal String saved in user's settings 
myConnection.ConnectionString = System.Properties.Default.MyConnectionString; 
myConnection.Open(); 
+0

接続文字列はアプリケーションスコープに制限されています:-(おかげで –

+0

私は間違いがない限り、 'String'型を使用することができます。 – McAden

+0

'properties.default'の' connectiostring'は読み込み専用です、どのように変更できますか? – vaheeds

関連する問題