web-dev-qa-db-ja.com

app.configファイル内の複数のSQLServer接続文字列

ユーザーがターゲットデータベースサーバーを選択するためのN個のラジオボタンのリストをWindowsフォームアプリに表示することに興味があります。 SQL Server接続文字列をapp.configファイルに追加して、実行時にアプリによって読み取られ、ウィンドウフォームにラジオボタンとして表示されるようにします。

最初は、接続を区切るために区切り文字を使用することを考えました

  <appSettings>
    <add key="ConnectionString" value="connection1|user id=user;password=123;server=10.0.0.1;database=myDatabase;connection timeout=30|connection2|user id=user;password=123;server=10.0.0.2;database=myDatabase;connection timeout=30"/>
</appSettings>

次に、キーと値のペアを分割します。

別の方法でこれを行うことは可能ですか?

12

App.configから定義されたすべての接続文字列を検索するには、(System.Configurationから)ConfigurationManagerを使用します。

列挙型はConfigurationManager.ConnectionStringsで、これには<connectionStrings>のすべてのエントリが含まれます。

あなたはこのコードでそれをループすることができます:

foreach(ConnectionStringSettings css in ConfigurationManager.ConnectionStrings)
{
   string name = css.Name;
   string connString = css.ConnectionString;
   string provider = css.ProviderName;
}

Nameは、接続文字列に付ける記号名です。実際には、何でもかまいません。

ConnectionStringは接続文字列そのものです。

ProviderNameは、接続のプロバイダーの名前です。例: System.Data.SqlClient(SQL Serverの場合)(およびその他のデータベースシステムの場合)。構成の接続文字列からproviderName=属性を省略すると、デフォルトでSQL Server(System.Data.SqlClient)になります。

マーク

31
marc_s

ConnectionStringsセクションを使用して、接続文字列を定義します。

<connectionStrings>
    <add name="connection1" connectionString="user id=user;password=123;server=10.0.0.1;database=myDatabase;connection timeout=30"/>
    <add name="connection2" connectionString="user id=user;password=123;server=10.0.0.2;database=myDatabase;connection timeout=30"/>
</connectionStrings>
14
d91-jal

はい、別の方法でこれを行うことは可能です。 app.configファイルで作成できるconnectionStringsセクションを確認してください。

<configuration>
   <connectionStrings>
       <add name="" connectionString=""/>
        <add name="" connectionString=""/>
    </connectionStrings>
</configuration>
3

Web.ConfigまたはApp.Configで複数の接続文字列を宣言できます

<connectionStrings>
<add name="SourceDB" connectionString="..." />
<add name="DestinationDB" connectionString="..." />
</connectionStrings>

DALまたは.csファイルでは、次のような接続文字列にアクセスできますstring SounceConnection = ConfigurationManager.ConnectionStrings["SourceDB"].ConnectionString; string DestinationConnection = ConfigurationManager.ConnectionStrings["DestinationDB"].ConnectionString;

1
Deepnath Kundu

AppSettings クラスを使用して、ConnectionStringで始まるすべての keys のリストを取得し、それらを表示できます。

設定ファイルは次のようになります。

<appSettings>
  <add key="ConnectionString_Name1" value="..."/>
  <add key="ConnectionString_Name2" value="..."/>
  <add key="ConnectionString_Name3" value="..."/>
</appSettings>

名前は、 splitting キー名(この例では「_」を使用)で取得できます。

ところで:あなたshouldConnectionStrings セクションを使用します、あなたは接続文字列にのみ興味があります。

0
GvS

LINQを使用して接続文字列のリストを取得する方法は次のとおりです。

List<string> connectionStrings = ConfigurationManager.ConnectionStrings
    .Cast<ConnectionStringSettings>()
    .Select(v => v.ConnectionString)
    .ToList();

または、その辞書を作成することもできます。

Dictionary<string/*name*/, string/*connectionString*/> keyValue = ConfigurationManager.ConnectionStrings
    .Cast<ConnectionStringSettings>()
    .ToDictionary(v => v.Name, v => v.ConnectionString);
0
Sergei Zinovyev