cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 2010
-
31 janv. 2006 à 10:54
cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 2010
-
1 févr. 2006 à 10:48
Bonjour à tous,
J'ai un logiciel qui utilise une base de données sql server et je me sers de sqlconnexion, sqldatareader, sqlexecutenonquery pour écrire et lire dans ma base, mais le problème est que à tout moment la connexion entre mon logiciel et la base de données peut être rompu. Quel est à votre avis le meilleur moyen de gérer cela ? En attrapant l'exeception sqlexeception à chaque fois que je lis ou que j'ecris dans la base et en faisant remonter l'erreur ?
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 31 janv. 2006 à 12:21
Salut,
La levée d'exception est couteuse.
Tu peux tester l'état de la connexion via la propriété State de SqlConnection (tout en gardant la gestion d'erreur naturellement :-) )
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 31 janv. 2006 à 15:37
L'arrêt brutal du serveur n'est pas une condition normale d'execution, l'état n'est pas mit à jour, d'où la présence de la gestion d'erreur en supplément.
Sinon pour ta méthode de test tu passes toujours par une nouvelle instance de SqlConnection alors forcément tu auras toujours la séquence Closed/Open.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 1 févr. 2006 à 10:06
Si tu utilises plusieurs instances tu auras de toutes façons plusieurs connexions...
Et pour le cas du cable, c'est ce que je disais : c'est pour ça qu'on gère les erreurs en supplément du test d'état.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 1 févr. 2006 à 10:28
Ca dépend.
Si l'accès aux données est intensif oui, autant tenter de garder la connexion ouverte.
En revanche si il s'agit d'un accès assez espacé, il peut être plus interessant de tout faire en local.
/*
coq
MVP Visual C#
*/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Si sqlserver est lancé et que j'execute cette fonction, ca va me sortir 0 puis 1, ce qui est logique. Seulement si juste après j'arrete sqlserver et que je reexecute cette fonction ca me ressort 0 puis 1 alors que sqlserver n'est plus actif. Et si je lance mon programme avec sqlserver non demarré et que j'execute cette fonction ca me sert 0 puis au moment de faire : sqlconnection.Open() ca me fait une erreur "Une exception non gérée du type 'System.Data.SqlClient.SqlException' s'est produite dans system.data.dll".
Qu'en penses tu ? est ce que j'utilise mal sqlconnection ?
cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 20102 1 févr. 2006 à 09:53
Le mieux est d'utiliser une instance unique de sqlconnection ? Sinon il peut arriver que le cable réseau qui reli le client au serveur se debranche donc dans ce cas je pense que je n'ai pas d'autre choix que d'attraper les exceptions chaque fois que je fais un sqldatareader ou un sqlexecutenonquery...