c#应用程序复选框以连接到不同的数据库

时间:2013-09-17 10:29:09

标签: c# sql-server winforms

在我的Windows窗体应用程序中,我有这样的场景:

我有5个等待用户输入的复选框。当用户单击复选框时,我的应用程序应连接到数据库。单击每个复选框应连接到不同的不同数据库。为简单起见,我已将我的ip地址和app config中的所有详细信息作为

<add key="SQLServer1" value="mmm.mm.mm.m,abcd" />
<add key="SQLServer2" value="nnn.nn.nn.n,wxyz" />

我写了这样的代码:

ConnectionString = "Data Source=" + ***** + ";Initial Catalog=" + Master + ";Persist Security Info=True;Connect Timeout=0;User ID=" + ConfigurationSettings.AppSettings["username"] + ";Password=" + ConfigurationSettings.AppSettings["password"];

我应该得到你标记*的人的帮助。我的意思是*我的应用程序应该能够根据用户点击的内容连接相关的IP ..

我说的话有什么机会吗?

任何其他选择也非常感谢..

5 个答案:

答案 0 :(得分:1)

您是如何连接数据库的? 通过Entity Frameworkdbcontext或自定义SQLConnection类?

您可以做的一件事,只要用户选中一个复选框,就可以从web.config获取连接字符串和服务器Ip的值

ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings[VARIABLENAME];

和应用设置。

用app设置值替换 * *,并将connectionstring传递给数据库连接类。

答案 1 :(得分:0)

您可以使用如下所示的格式化变量:

string connectionString = String.Format("Data Source={0};Initial Catalog=" + Master + ";Persist Security Info=True;Connect Timeout=0;User ID=" + ConfigurationSettings.AppSettings["username"] + ";Password=" + ConfigurationSettings.AppSettings["password"], <get value from checkbox>);

答案 2 :(得分:0)

每个checkBox都有一个checkBox.Checked参数,因此您可以创建一个函数,在选中checkBox时插入正确的IP地址:

if(checkBox1.Checked) { string DataSource = some IP address; }

并为每对复选框/ IP地址重复此代码。

P.S因为您可能希望在一瞬间只连接到一个数据库,所以应该使用radioButtons而不是checkBoxes

答案 3 :(得分:0)

我不知道您使用CheckBox的原因。如果您需要只连接到一个数据库,则应使用RadioBox。如果你需要几个DB,你可以注册checkBox Checked事件:

     this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

并且做:

  private void checkBox1_CheckedChanged(object sender, EventArgs e)
  {
     if (checkBox1.Checked)
     {
        string currStr = ConnectionString.Replace("*****", currIP);// the currIP is up to u  
     }
     else
     {

     }

  }

现在你可以把它们全部放在一个列表中

List<string> connStrings = new List<string>();

并做

  private void checkBox1_CheckedChanged(object sender, EventArgs e)
  {
     string currStr = ConnectionString.Replace("*****", currIP);// the currIP is up to u  

     if (checkBox1.Checked)
     {
        connStrings.Add(currStr);
     }
     else
     {
        connStrings.Remove(currStr);
     }

  }

现在您已将它们全部放入列表中,您可以将其与foreach

一起使用
foreach(string curr in connStrings)
{
}

我确实提醒您,您必须将每个CheckBox注册到他自己的事件方法

答案 4 :(得分:0)

我有一个场景,我必须在一个应用程序中使用5个不同的数据库。

做了什么,我有一个单一的 DBUtility 类,它提供了所有与数据库相关的功能。在这个类中,我有一个名为init()的方法,它初始化我的连接字符串。

所以我创建了继承自主类DBUtility的其他4个类,并将init()方法覆盖到不同的连接字符串。

您还可以创建类似的结构,然后根据复选框选择创建所需类的对象

e.g。

DBUtility obj = new DBUtility2();

,其中

public class DBUtility
{
public SqlConnection cn;
 public void init()
{
//initialize cn here
}

public DataSet getdata(string query)
{
//execute query using cn
}
}

public class DBUtility2 : DBUtility
{
public void init()
{
//initialize cn here
}
}