2011-07-18 19 views
0

問題が発生しました。私はスタック! 私は新しいクラスが必要かどうかわかりません! ボタンをクリックして接続を閉じるメソッドが必要です。C#MySqlクラス//接続のオープンとクローズ

私はすでにコンストラクタを作成しました:

public string Server; 
    public string Username; 
    public string Pwd; 
    public string DB; 


    MySqlConnection conn; 
    string ConnString; 

    public DBVerb(string eServer, string eUsername, string ePwd, string eDB) 
    { 
     this.Server = eServer; 
     this.Username = eUsername; 
     this.Pwd = ePwd; 
     this.DB = eDB; 

    } 

そして、この二つの方法:

 public void Connect(System.Windows.Forms.Label lblStatus) 
    { 
     try 
     {     
      ConnString = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false", 
               this.Server, this.Username, this.Pwd, this.DB); 
      conn = new MySqlConnection(); 
      conn.ConnectionString = ConnString; 

      if (conn != null) 
       conn.Close(); 


      conn.Open(); 
      if (conn.State == ConnectionState.Open) 
      { 
       lblStatus.Text = String.Format("Verbindung zu {0} user: {1} Zeit: {2}", this.Server, this.Username, DateTime.Now.ToString()); 
      } 
      else 
      { 
       MessageBox.Show("Felher"); 
      } 


     } 
     catch (Exception Ex) 
     { 
      MessageBox.Show(Ex.Message, "Fehler:", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 

    } 
    public void ClConnect() 
    { 
     conn = new MySqlConnection(); 
     if (conn.State == ConnectionState.Open) 
     { 
      conn.Close(); 
     } 
    } 

ここで私はMethodeのを呼んでいる:

 private void cmdHerstellen_Click(object sender, EventArgs e) 
    { 
     string lServer = txtBServ.Text; 
     string lUID = txtBUid.Text; 
     string lPawd = txtBPass.Text; 
     string lDB = txtBDat.Text; 


     DBVerb VerbindungHerstellen = new DBVerb(lServer, lUID, lPawd, lDB); 
     VerbindungHerstellen.Err(); 
     VerbindungHerstellen.Connect(lblStatus); 



    } 

    private void cmdAbbr_Click(object sender, EventArgs e) 
    { 


    } 

私はメソッドClConnectを呼び出す場合()よりもパラメータの引数を与える必要がありますが、すでに行っているので、うまくいきません。

どうすればいいですか?

答えて

1

クラスのフィールドとしてdbconnectionを保存しています。それを閉じたいときは、conn = new MySqlConnection();で新しい接続オブジェクトを割り当てずに、その行を削除して、connがnullかどうかを調べるチェックに置き換えたいだけです。 nullが指定されている場合は、作業を行う必要はありません(またはそのエラーが発生している可能性があります)。nullでない場合は、開いているかどうかを確認し、必要に応じて閉じることができます。

また、connectメソッドで新しいオブジェクトを作成する場所にも注意してください。 connがすでに存在する場合は、新しい接続オブジェクトを作成したくない(または作成する必要がある)可能性があります。

私の最後のコメントは、接続を閉じるためにボタンをクリックする必要があるユーザーについて間違った響きがあるということです。それは、コードではなく、ユーザーの心配であるべきです。しかし、私は明らかにこれで何をしているのかわからないので、間違っているとは言えません。ちょっと間違っていると感じます。 :)

+0

あなたのお手伝いをしてくれて、私はすでにそれを修正しました=) –

+1

あなたはおそらく、自分の答えを正しいとマークするか(それを修正する方法が記述されていれば)あなたはそれを修正して、答えを正しい答えとしてマークする必要がありました(答えの隣に小さな目盛りをつけてください)。 – Chris

関連する問題