2012-01-31 34 views
2

我的連接按鈕工程..請參閱我的SqlConnection中的MySqlCommand

private void connectBtn_Click(object sender, EventArgs e) 
     { 
      username = initialTf.Text; 
      adress = adressTf.Text; 

      connect conn = new connect(); 
      conn.myConnection(username, adress); 
     } 

指的這種方法

public SqlConnection myConnection(string dbName, string addr) 
     { 
      connector = new SqlConnection(
      "Data Source=" + addr + ";" + "Initial Catalog=" + dbName + ";Trusted_Connection=yes;"); 
      try 
      { 
       connector.Open(); 
       MessageBox.Show("Du är ansluten"); 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show("Fail" + e); 
      } 
      return connector; 

然後我添加另一個按鈕閱讀從將執行SQL命令的textField。問題是我不知道如何獲取和使用連接方法。

按鈕代碼

private void askBtn_Click(object sender, EventArgs e) 
     { 
      sqlQuestion = sqlQuestiontF.Text; 
      connect conn = new connect(); 
      conn.askSQL(sqlQuestion); 

     } 

最後的代碼在連接類

> class connect 
>  { 
>   SqlConnection connector; 
>   SqlDataReader rdr = null; 
> 
>   public void askSQL (string sqlQuestion) 
>   { 
> 
>    SqlCommand cmd = new SqlCommand(); 
>    cmd.CommandText = sqlQuestion; 
>    cmd.Connection = connector; 
>    try 
>    { 
>     rdr = cmd.ExecuteReader(); 
>     while (rdr.Read()) 
>     { 
> 
>     } 
> 
>    } 
>    catch (Exception e) 
>    { 
>     MessageBox.Show("Fel vid anslutningen!" + e); 
>    } 
>   } 

我的錯誤信息是說,連接沒有被正確initalized。對不起語法錯誤和我的困惑。完全新編程:)

回答

1

在你的第二個按鈕單擊事件你聲明另一個連接對象。這與第一個按鈕中的不一樣。 askSQL()方法期望連接已經被初始化。爲此,您必須在第二個按鈕事件中運行第一個按鈕代碼。

private void askBtn_Click(object sender, EventArgs e) 
{ 
sqlQuestion = sqlQuestiontF.Text; 
username = initialTf.Text; 
adress = adressTf.Text; 

connect conn = new connect(); 
conn.myConnection(username, adress); 

conn.askSQL(sqlQuestion); 
} 
+0

謝謝它的工作。現在我想知道如何檢索從SqlQuery獲得的數據以及如何將其發回視圖類。你知道如何以及什麼是最好的(列表框等)用來發回結果集? – Thomas 2012-02-01 10:22:12

+0

將datareader聲明從askSQL方法中提取出來,並將其作爲connect類的屬性公開,然後可以從表單訪問它。在表單上使用datagridview來顯示結果。 – 2012-02-01 13:06:25

0

我想你錯過了connector.Open()的代碼。

class connect 
{ 
    SqlConnection connector; 
    SqlDataReader rdr = null; 

    public void askSQL(string sqlQuestion) 
    { 
     try 
     { 
      using (connector = new SqlConnection("Your Connection String here")) 
      { 
       SqlCommand cmd = new SqlCommand(); 
       cmd.CommandText = sqlQuestion; 
       cmd.Connection = connector; 

        rdr = cmd.ExecuteReader(); 
        using (rdr) 
        { 
         while (rdr.Read()) 
         { 

         } 
        } 

      } 
     } 
     catch (Exception ex) 
     { 
      if (connector.State == System.Data.ConnectionState.Open) 
       connector.Close(); 
      MessageBox.Show("Fel vid anslutningen!" + e); 
     } 
    } 
} 
+0

conn.Open()位於myConnection類中。我想分開連接類和sql命令類。你也許知道一個sql查詢的返回類型是什麼?我的大腦正在努力研究如何讓答案回到屏幕上。 – Thomas 2012-02-01 10:24:33