Test de connexion sql sans jeter exception
Pour tester si je peux me connecter à ma base de données, j'exécute le code suivant :
using (SqlConnection connection = new SqlConnection(myConnectionString))
{
try
{
connection.Open();
canConnect = true;
}
catch (SqlException) { }
}
Cela fonctionne sauf qu'il déclenche une exception si la connexion a échoué. Est-il un autre moyen pour tester une connexion Sql qui ne lance pas d'exception ?
Edit :
Pour ajouter de la précision, je me demande si il existe une méthode simple qui ne fait que sans avoir à ouvrir la connexion et attraper les exceptions qui peuvent se produire
Pourquoi voulez-vous éviter de l'exception?
OriginalL'auteur Alexandre Pepin | 2010-04-08
Vous devez vous connecter pour publier un commentaire.
Lorsque l'on tente d'ouvrir une connexion, il n'y a aucun moyen d'éviter l'exception, si la connexion ne peut pas être ouvert. Il peut être caché dans une fonction quelque part, mais vous allez obtenir de l'exception, peu importe quoi.
Il a été conçu comme ça parce que généralement vous attendre à être en mesure de se connecter à la base de données. Un échec de la connexion est le exception.
Cela étant dit, vous pouvez tester le actuel état de la connexion à tout moment en consultant le
State
propriété.OriginalL'auteur Jon Seigel
Si elle lève une exception et vous gérer de votre bloc catch vous connaissez déjà l'échec de la connexion. Je pense que vous avez répondu à votre propre question.
OriginalL'auteur Brownman98
écrire une extension de la sorte:
Alors vous pouvez le consommer comme:
HTH.
est pas de JETER dans le bloc catch de la méthode d'extension efficacement de manger l'exception. Je préfère avoir cette exception levée, mais l'OP mentionné qu'il ne voulait pas exception jeter lors de la vérification si une connexion ne peut être ouvert, d'où ma solution.
Soins à propos de cette solution, SqlConnection.Open() obtiendrez la connexion de la piscine si le regroupement est disponible. Ensuite, le État sera Ouvrir même si la connexion est endommagé (canal TCP vers le bas par exemple). Et alors, l'exception ne seront soulevées lors de l'exécution d'une commande. Une solution de contournement est d'utiliser Connexion.ChangeDatabase(Connexion.La base de données); pour vérifier si la connexion est disponible.
ce code manque une accolade
OriginalL'auteur Sunny
Je pense que la vraie réponse est ici de ping.
Sauf si vous explicitement vérifier si une connexion sql est possible 9/10, vous devez savoir si quelque chose est un serveur sql server. Ce serait vous faire économiser cette mauvaise utilisation de la mémoire d'une exception qui est ce que je vous parie que vous êtes vraiment après.
OriginalL'auteur Arian
Vous pouvez toujours utiliser le
ConnectionStringBuilder
de classe et de vérifier l'existence de chaque pièce qui est requis par une chaîne de connexion avant de tenter de l'ouvrir.Si la chaîne de connexion est correcte, mais le serveur de base de données auquel vous vous connectez est en panne, vous êtes toujours va obtenir un excepton. Type de inutile de vérifier la qualité de la chaîne si le point de terminaison que vous êtes connecté à peut éventuellement être en mode hors connexion.
OriginalL'auteur dgarbacz
Vous ne pouvez pas éviter d'exception à venir lors de la connexion de base de données, mais ont une fonction qui gèrent très bien. Je suis à l'aide de cette fonction qui retourne true si la connexion existe.
OriginalL'auteur Ankush Madankar