簡體   English   中英

如何從ComboBox連接到數據庫?

[英]How do you connect to a DataBase from a ComboBox?

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建立另一個表單,但是在服務器之間切換似乎很低效。

您應該將創建連接的代碼向下移動到click事件處理程序中,然后可以在連接字符串中使用comboBox1.Text。

private void button1_Click(object sender, EventArgs e)
{
   //Load Data
   try
   {
      string conString = ConfigurationManager.ConnectionStrings[comboBox1.Text].ConnectionString;
      OracleConnection con = new OracleConnection(conString);
      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();
   }
}

如果在您手動將test1test2用作ConfigurationManager.ConnectionStrings[]的索引時有效,則問題出在從comboBox1返回的內容上。

您沒有向我們展示該代碼,因此我們無法確切告訴您什么地方出了問題,而是嘗試執行以下操作:

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

然后在第二行上放置一個斷點,以查看您真正在其中放置的內容。 如果這樣做不能解決您的問題,請發布您的組合框,讓我們用更好的信息再試一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM