2012-03-30 6 views
2

可能性の重複:私はC#を使用して、私のPCでのWinFormsプロジェクトを作成している、としたい
VS2005 C# Programmatically change connection string contained in app.config他のデータベースに接続するためにC#で動的にapp.configをを設定し

プロジェクトを他のPCに展開するが、app.configの接続文字列を変更して、他のPCのsqlサーバーデータベースに接続する必要があり、ユーザーに接続文字列を設定させたい。

どうすればこの問題を解決できますか?

+0

マシン上の異なるデータベースのパターンはありますか? –

+0

データベースはsqlserver 2008 Express Editionであり、シンクライアントサーバーで実行されています。作成したアプリケーションをサーバーに展開したいので、各シンクライアントはデータベースとやり取りするアプリケーションを使用できますが、ユーザーとアプリケーションとの間の接続を構成する – user1286824

答えて

5

プロジェクトの設定ファイルを作成した場合は、そのプロパティをタイプセーフな方法で表すクラスが存在します。これは通常、TiddleBits.Properties.Settings.Defaultのようなものです。TwiddleBitsはアセンブリ名です。

プロジェクトの設定ファイルを作成していない場合は、それを行います。これは設定ファイルの操作を大幅に簡素化します。

クラスが存在すると、他のクラスと同じようにプロパティを読み書きできます。プロパティの割り当てが完了したら変更を保存することを忘れないでください。削除した場合は変更が保存されます。

3

独自の設定ファイルを作成すると、移動するための方法であると述べています。ここにいくつかのコードがあります。

VSでapp.configファイルを作成し、dllと同じディレクトリに配置してください。それはこのようなものに見えます。

<?xml version="1.0" encoding="utf-8" ?> 
     <configuration> 
     <appSettings> 
     <add key="YourThing" value="Something" /> 
     </appSettings> 
    </configuration> 

次に、これを読み込むことができます。

string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

     string configFile = System.IO.Path.Combine(appPath, "App.config"); 
     ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap(); 
     configFileMap.ExeConfigFilename = configFile; 

     System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None); 

このような値を読み取ることができます。

config.AppSettings.Settings["YourThing"].Value; 

このような値を保存します。

config.AppSettings.Settings["YourThing"].Value = "New Value"; 
config.Save(); 
関連する問題