2

私はC#にかなり慣れていません。これまでのところ、学習はうまくいっています。質問が 1 つあります。おそらく 2 つあります。

プロジェクトの開始時に接続文字列を選択できるようにするには、ユーザー ダイアログをどのように作成しますか? 同じスキーマを持つ 4 つのデータベースがあり、ユーザーがプログラムの起動時に接続先を選択できるようにしたいと考えています。

私は現在データセットを使用していますが、望ましい結果を達成するために別の方法を学び、試してみたいと思っています。

4

3 に答える 3

5

それらを構成のconnectionStrings領域に配置し、接続文字列の名前を含む ComboBox をユーザーに提供します。次に、選択したものを使用します。

あなたの設定で:

<connectionStrings>
  <add name="Environment1" connectionString="connString1" providerName="System.Data.SqlClient" />
  <add name="Environment2" connectionString="connString2" providerName="System.Data.SqlClient" />
  <add name="Environment3" connectionString="connString3" providerName="System.Data.SqlClient" />
  <add name="Environment4" connectionString="connString4" providerName="System.Data.SqlClient" />
</connectionStrings>

コードで、接続文字列を ComboBox に追加します。

foreach (ConnectionStringSettings connString in ConfigurationManager.ConnectionStrings)
{
    myComboBox.Items.Add(connString.Name);
}

ComboBox から名前を取得し、必要な connString を取得して使用します。

// Access chosen one:
string chosenName = (string)myComboBox.SelectedItem;
string connString = ConfigurationManager.ConnectionStrings[chosenName].ConnectionString;
于 2012-05-03T18:14:04.890 に答える
1

zimdanenが提案するように、さまざまなデータベースの接続文字列をapp.configまたはweb.configファイルに入れる必要があります。

 <connectionStrings>
    <add name="Database1" connectionString="Data Source=.\SQLEXPRESS;Initial 
     Catalog=db1;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

次に、ConfigurationManagerクラスを使用して結果を得ることができます。

foreach (ConnectionStringSettings connectionString in 
                     ConfigurationManager.ConnectionStrings)
 {
     //YOU CAN ADD NAME OF CONNECTION STRING TO A COMBOBOX FOR USER TO MAKE
     // A SELECTION
     //connectionString.Name
 }

選択が完了したら、次の行で目的の接続文字列を取得できます。

var s=ConfigurationManager.ConnectionStrings[<SELECTED NAME>].ConnectionString
于 2012-05-03T18:16:30.043 に答える
0

アプリケーション構成ファイルを追加し、接続文字列を < connectionStrings> に追加します。コードで ConfigurationManager.ConnectionString を使用して、接続文字列のリストを列挙します。

于 2012-05-03T18:17:59.700 に答える