2012-01-31 88 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