2013-07-25 13 views
10

Ho questo codice giù che ho provato a fare Test connettività stringa SQL, ma non so come gestire la parte con connection.Open = true per favore aiutatemi a risolvere questo? Grazie mille per il tuo tempo.Il modo più efficiente per testare la disponibilità della stringa di connessione SQL

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 
     { 

     } 
    } 

Dice: "Non è possibile assegnare dei 'aperta', perché si tratta di un 'gruppo methoud'" So che questo codice potrebbe essere totalmente male, ma ho bisogno di gestire questo in qualche modo e non hanno idea di che cosa è il diritto modo. Grazie.

Questo è ciò che non è in realtà di lavoro per il collegamento non-aperto:

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()' è un ** metodo ** che restituisce non è una proprietà. Non è possibile assegnare un valore ad esso. Vedi la mia risposta. – DGibbs

risposta

16

Stai utilizzando connection.Open = true come se si trattasse di una proprietà.

E 'un metodo: connection.Open()

Utilizzare la ConnectionState enum per determinare se la connessione è aperta o no, ad esempio:

connection.State == ConnectionState.Open 
+0

Ciao, grazie per il tuo tempo, posso chiederti come sembrerebbe (se non fosse connesso con successo?) Ho provato connection.State == ConnectionState.Closed o Broken ma non ha fatto apparire la casella msg. – Marek

+0

Dove hai chiamato 'connection.State == ConnectionState.Closed'? Puoi aggiornare la tua domanda? – DGibbs

+0

Ho aggiornato la domanda in modo che tu possa capire meglio – Marek

3

È necessario verificare se è aperto da questo codice:

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

Ciao, grazie per il tuo tempo, posso chiederti come sembrerebbe (se non fosse connesso con successo?) Ho provato connection.State == ConnectionState.Closed o Broken ma non ha fatto apparire la casella msg. – Marek

+2

Proverei 'connection.State! = ConnetionState.Open' – wudzik

+1

Ho provato anche quello, ma non ho fatto apparire la casella dei messaggi neanche. Ho aggiornato la domanda in modo da poter capire meglio il mio problema. – Marek