ユーザーがターゲットデータベースサーバーを選択するための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>
次に、キーと値のペアを分割します。
別の方法でこれを行うことは可能ですか?
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)になります。
マーク
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>
はい、別の方法でこれを行うことは可能です。 app.configファイルで作成できるconnectionStringsセクションを確認してください。
<configuration>
<connectionStrings>
<add name="" connectionString=""/>
<add name="" connectionString=""/>
</connectionStrings>
</configuration>
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;
AppSettings クラスを使用して、ConnectionStringで始まるすべての keys のリストを取得し、それらを表示できます。
設定ファイルは次のようになります。
<appSettings>
<add key="ConnectionString_Name1" value="..."/>
<add key="ConnectionString_Name2" value="..."/>
<add key="ConnectionString_Name3" value="..."/>
</appSettings>
名前は、 splitting キー名(この例では「_」を使用)で取得できます。
ところで:あなたshouldも ConnectionStrings セクションを使用します、あなたは接続文字列にのみ興味があります。
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);