2016-03-30 4 views
0

J'essaye d'obtenir le numéro de la tentative d'essai d'un SQLConnection pour informer l'utilisateur de ces tentatives. Ci-dessous vous pouvez voir le code, où la magie devrait arriver. 'i' serait le numéro de la tentative. La connexion 'con' jette beaucoup de SqlExceptions, mais je ne peux pas les attraper comme montré ci-dessous. 'databaseConnection' représente la chaîne de connexion. Il est actuellement vide à des fins de test. Je parie, qu'il me manque quelque chose, mais je ne peux pas comprendre quoi, puisque je suis nouveau à la programmation SQL en C#. "txtProgressbarWorking" est une étiquette dans l'interface utilisateur.C# SQL: get sql connection try tentative

   int i = 1; 
       con = new SqlConnection(databaseConnection); 
       try 
       { 
        con.Open(); 
       } 
       catch(SqlException s) 
       { 
        txtProgressbarWorking.Content = "Connecting... " + (++i); 
       } 

Répondre

0

Il y a plusieurs choses mal avec ce code:

1) Vous appelez cela dans une sorte de boucle? Sinon, votre variable i ne sera pas incrémentée.

2) SqlConnection.Open() jette plusieurs types d'exceptions - pas seulement SqlException, ce que je suppose est pourquoi vous "ne pouvez pas les attraper" tout comme vous l'avez mentionné. Vous devriez idéalement spécifier chaque exception ou attraper le plus haut niveau System.SystemException.

3) Votre code pour incrémenter la barre de progression est dans le catch-block de votre gestionnaire d'exception, et ne sera exécuté que si l'exception est interceptée. Si vous appelez en fait ce code dans une boucle, vous voudriez déplacer le code dans le catch-block dans le try-block à la place.

4) Votre ++i doit être i++ de sorte que i soit incrémenté après l'instruction; soit que, ou initialiser i à zéro au lieu de 1. La façon dont vous l'avez maintenant, la première valeur de i dans votre bloc catch serait 2.

Je vous suggère de jeter un oeil à [la documentation MSDN sur SqlConnection. Méthode ouverte()] [1] https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.open%28v=vs.110%29.aspx