在C#项目中在运行时选择连接字符串

问题描述 投票:2回答:3

我对C#相当陌生。到目前为止,学习情况良好。我确实有一个问题,也许是两个。

如何创建用户对话框,以允许在项目启动时选择连接字符串?我有4个具有相同架构的数据库,并希望允许用户在启动程序时选择要连接的数据库。

我目前正在使用数据集,但愿意学习/尝试另一种方法来获得所需的结果。

c# visual-studio-2010 windows-forms-designer
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;

1
投票

您需要按照zimdanen的建议,将各种数据库的连接字符串放入app.configweb.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

0
投票

添加应用程序配置文件,然后在中添加您的连接字符串。在您的代码中,使用ConfigurationManager.ConnectionString枚举连接字符串列表。


-1
投票

这非常有用。但是我有几个问题。

我将如何只获取连接名称而不是整个“路径”

Project.Properties.Settings.ConnectionString

依此类推..

然后我将如何实际使用组合框中的选择?

我得到:var s = ConfigurationManager.ConnectionStrings []。ConnectionString

但是我将在哪里实际使用它?

提前感谢

© www.soinside.com 2019 - 2024. All rights reserved.