如何从ComboBox连接到数据库?

时间:2018-10-09 01:56:40

标签: c# winforms

app.config中的连接字符串文件:

<connectionStrings>
    <add name ="test1" connectionString = "Data Source=
              (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.1)(PORT=1521)))
              (CONNECT_DATA=(SERVICE_NAME=test1)));User Id=test1;Password=test1;" />

    <add name ="test2" connectionString = "Data Source=
              (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.1)(PORT=1521)))
              (CONNECT_DATA=(SERVICE_NAME=test1)));User Id=test2;Password=test2;" />
    </connectionStrings>

Form中的文件正在加载:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();           
    }

    static string conString = ConfigurationManager.ConnectionStrings["test1"].ConnectionString;
    OracleConnection con = new OracleConnection(conString);
    OracleCommandBuilder cmdbld;
    OracleDataAdapter da;
    DataSet ds;


    private void button1_Click(object sender, EventArgs e)
    {
        //Load Data
        try
        {
            con.Open();
            da = new OracleDataAdapter("sql command", con);
            ds = new DataSet();
            cmdbld = new OracleCommandBuilder(da);
            da.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            con.Close();
        }
    }
}

那么,如何在这里使用ComboBox来更改test1test2之间的连接?
目前,我仅将test1替换为test2,但是将comboBox1.Text放在connectionStrings[]中却不起作用。我在这里可以做什么?

我可以建立另一个登录表单,为test1建立一个表单,为test2建立另一个表单,但是在服务器之间切换似乎很低效。

2 个答案:

答案 0 :(得分:0)

您应该将创建连接的代码向下移动到click事件处理程序中,然后可以在连接字符串中使用comboBox1.Text。

;; calculate the random number
xor     rax, rax
mov     rcx, rax
call    time
mov     rcx, rax
call    srand
call    rand

;; rand = (rand % 100) + 1
xor     rdx, rdx
mov     rcx, 100
div     rcx
inc     rdx
mov     [target], rdx
mov     rcx, scan_fmt
call    printf

答案 1 :(得分:0)

如果当您手动将test1test2作为ConfigurationManager.ConnectionStrings[]的索引时有效,则问题出在comboBox1返回的内容上。

您没有向我们展示该代码,因此我们无法确切告诉您出了什么问题,请尝试执行以下操作:

var desiredServer = comboBox1.Text;
static string conString = ConfigurationManager.ConnectionStrings[desiredServer].ConnectionString;

,然后在第二行上放置一个断点,以查看您真正在其中放置的内容。如果这样做不能解决您的问题,请发布您的组合框,让我们用更好的信息再试一次。