2013-07-25 5 views
10

Ich habe diesen Code, den ich versuchte, es SQL Connection zu testen, aber ich weiß nicht, wie man mit dem Teil mit connection.Open = true umgehen, würden Sie mir bitte helfen, dies zu lösen? Vielen Dank für Ihre Zeit.Am effizientesten Weg SQL-Verbindungszeichenfolge Verfügbarkeit zu testen

private void button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      using (SqlConnection connection = new SqlConnection("Data Source='" + textBox1.Text + "';Initial Catalog='" + textBox2.Text + "';User ID='" + textBox3.Text + "';Password='" + textBox4.Text + "'")) 
      { 
       try 
       { 
        connection.Open(); 
        if (connection.Open == true) // if connection.Open was successful 
        { 
         MessageBox.Show("You have been successfully connected to the database!"); 
        } 
        else 
        { 
         MessageBox.Show("Connection failed."); 
        } 
       } 
       catch (SqlException) { } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Chyba v přihlášení: " + ex); 
     } 
     finally 
     { 

     } 
    } 

Dort heißt es: „Kann asign‚offen‘nicht, weil es sich um eine" methoud Gruppe ist:“Ich weiß, dass dieser Code könnte totaly schlecht sein, aber ich brauche diese haben irgendwie zu handhaben und keine Ahnung, was das Recht ist Weg. Vielen Dank.

das ist, was für nicht-geöffnete Verbindung nicht wirklich funktioniert:

using (SqlConnection connection = new SqlConnection("Data Source='" + textBox1.Text + "';Initial Catalog='" + textBox2.Text + "';User ID='" + textBox3.Text + "';Password='" + textBox4.Text + "'")) 
     { 

      connection.Open(); 

      if (connection.State == ConnectionState.Open) 
      { 

       MessageBox.Show("Spojení s databázi problěhlo úspěšně."); 
      } 
      connection.Close(); 
      if (connection.State == ConnectionState.Closed) 
      { 
       MessageBox.Show("Spojení selhalo"); 
      } 
     } 
+0

'.Open()' ist eine ** Methode **, die void zurückgibt, es ist keine Eigenschaft. Sie können ihm keinen Wert zuweisen. Siehe meine Antwort. – DGibbs

Antwort

16

Sie verwenden connection.Open = true, als ob es sich um eine Eigenschaft waren.

Es ist eine Methode: connection.Open()

die ConnectionState ENUM verwenden, um zu bestimmen, ob die Verbindung geöffnet ist oder nicht, zum Beispiel:

connection.State == ConnectionState.Open 
+0

Hallo, danke für deine Zeit, Darf ich fragen, wie würde aussehen (wenn nicht erfolgreich verbunden war?) Ich versuchte connection.State == ConnectionState.Closed oder Broken, aber es erschien nicht die msg-Box. – Marek

+0

Wo haben Sie 'connection.State == ConnectionState.Closed' aufgerufen? Können Sie Ihre Frage aktualisieren? – DGibbs

+0

Ich habe die Frage aktualisiert, damit Sie besser verstehen können – Marek

3

Sie müssen prüfen, ob es durch diesen Code offen ist:

if(connection.State == ConnectionState.Open) 
{ 
    ... 
} 
+0

Hallo, danke für Ihre Zeit, Darf ich fragen, wie würde aussehen (wenn nicht erfolgreich verbunden war?) Ich versuchte connection.State == ConnectionState.Closed oder Broken, aber es erschien nicht die msg-Box. – Marek

+2

Ich würde versuchen, 'connection.State! = ConnetionState.Open' – wudzik

+1

Ich habe das auch versucht, aber nicht die Meldungsbox Pop nicht auf. Ich habe die Frage aktualisiert, damit Sie mein Problem besser verstehen können. – Marek

Verwandte Themen