IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ADO.NET Discussion :

Etat d'une connexion [Débutant]


Sujet :

ADO.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 21
    Points
    21
    Par défaut Etat d'une connexion
    Bonjours, je voulais savoir si il etait possible de connaittre l'etat d'une connexion en temps reel.

    J'ai thread qui verifierais l'etat de ma connexion et si par exemple le service sql server s'arrete mon logiciel se place en mode deconnecter.

    Mais la seule solution que j'ai trouver est de placer un executescalar dans mon thread et de retourner un false si le scalar plante.

    Existe un moyen moins gourment que lancer executescalar sans cesse ? dois je forcement atteindre la bdd pour savoir si j'ai plus de liaison avec elle?

    J'ai bien penser à verifier le service directement mais mon logiciel tourne aussi bien sur mysql, oracle et sql server

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonjour

    Je ne vois pas trop bien l'interêt de connaitre l'état d'une connexion en temps réel dans la mesure où la durée de vie d'une connexion est justement censée être la plus courte possible (on instancie la connexion, on prépare la commande, on ouvre la connexion, on exécute la commande, on ferme et on désalloue la connexion).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    tu rouvre pas une connexion a chaque requete ?

    ce que je desire c'est de pouvoir savoir en temps si ma connexion est toujours viable.
    Car si j'arrete le service sql server, je m'apercoie de la perte de ma connexion seulement lors du plantage et je trouve un peu tard l'avertissement

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par jorrie Voir le message
    tu rouvre pas une connexion a chaque requete ?
    C'est la pratique normale de programmation. Les "pools" n'ont pas été inventés que pour le ball trap (EDIT : d'ailleurs c'est PULL dans le cas du ball trap - voulu tenter un jeu de mot et c'est raté ).

    ce que je desire c'est de pouvoir savoir en temps si ma connexion est toujours viable.
    Comme je te l'ai dit, ça n'a pas de justification.

    Car si j'arrete le service sql server, je m'apercoie de la perte de ma connexion seulement lors du plantage et je trouve un peu tard l'avertissement
    En dehors du fait qu'un arrêt du service correspond pas à une situatiion normale en production, et entraine normalement une remontée d'alerte vers le cockpit de supervision ou ce qui en tient lieu, tu gère vraisemblablement mal la durée de vie de ta connexion.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    en gros c'est a moi d'intercepter l'erreur si je perd ma connexion ?

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par jorrie Voir le message
    en gros c'est a moi d'intercepter l'erreur si je perd ma connexion ?
    Je ne sais pas d'où te vient cette obsession sur les "pertes de connexion". Une connexion a (sauf programmation vraiment mal fichue ou commande longue) une durée de vie très courte; donc, on l'ouvre, on exécute la commande, on ferme.

    Il peut y avoir un problème entre les deux, ou sur l'exécution mais en général le problème va venir lorsque tu vas tenter l'ouverture.

    Typiquement une requête simple va toujours avoir plus ou moins cette forme là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    try
    {
    	using (IDbConnection connection = new SqlConnection(myConnectionString))
    	{
    		using (IDbCommand command = connection.CreateCommand())
    		{
    			// preparation de la commande
    			command.CommandText = "blablabla";
    			command.CommandType = CommandType.Text;
    			// préparation des paramétres ..
    			IDbDataParameter param1 = command.CreateParameter();
    			param1.ParameterName = "@nom_du_param1";
    			param1.Value = la_valeur;
    			command.Parameters.Add(param1);
    			// etc.....
    			command.Parameters.Add(paramn);
    			// Ouverture
    			connection.Open();
    			// Exéxution (peut etre aussi ExecuteScalar, ExecuteReader ou Fill d'un DataSet)
    			command.ExecuteNonQuery();
    			// Fermeture
    			connection.Close();
    		}
    	}
    }
    catch (Exception ex)
    {
    	// ... traitement de l'exception;
    }
    Bien sur si c'est une requête en Interrogation, un ExecuteReader ou un ExecuteScalar va être utilisé en lieu et place du ExecuteNonQuery, ou encore un DataAdapter va être utilisé mais cela ne change rien à l'enchainement des lignes de codes (dans le cas d'un DataAdapter, le Open et Close vont encadrer le FIll au lieu du Execute_kekchoz mais c'est tout).

    Le catch se chargera de récupérer les erreurs éventuelles (bien sur, tu peux sophistiquer les traitements d'erreurs pour savoir si c'est le Open ou le Execuet qui plante, etc ....).

    Eventuellement, dans le cas d'une transaction plusieurs commandes vont être chainées, etc .... mais ça ne change pas grand chose.

    Bref, j'ai l'impression que tu soulèves un problème qui n'existe pas ou alors que tu laisses tes connexions ouvertes au délà du scope de la transaction utilisée, ce qui est une faute de programmation.

    EDIT : essaye de préciser ton besoin fonctionnel, car j'ai l'impression qu'il y a quelques chose que je ne comprends pas dans ce que tu cherches.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    disons que notre logiciel utilise des bases de données distantes.

    On m'a demandé que si un problème de connexion survient je me retrouve pas avec un gros plantage et des messages d'erreurs .

    Mon but est que si le logiciel plante à cause d'une connexion a la base de donnée , je puisse fermé les fenetres proprement et d'initialiser le logiciel comme a son lancement

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par jorrie Voir le message
    disons que notre logiciel utilise des bases de données distantes.
    Ok, comme 99 % des applications de gestion; jusque là, pas de problèmes.

    On m'a demandé que si un problème de connexion survient je me retrouve pas avec un gros plantage et des messages d'erreurs .
    Les transactions vont justement assurer l'intégrité des données. Ca tombe bien, elles servent à cela.

    Mon but est que si le logiciel plante à cause d'une connexion a la base de donnée , je puisse fermé les fenetres proprement et d'initialiser le logiciel comme a son lancement
    Bof ..... il suffit donc d'identifier le problème dans le bloc de catch à partir de là, tu fais ce que tu veux.

    Mais ré-initialiser l'application sous prétexte qu'un connexion plante (ce qui peut être en général un problème transitioire réseau ou un problème permanent réseau ou externe - arrêt du serveur par exemple) est une idée particuliérement absurde (pour rester poli), à mon avis.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    bien d'accord mais je ne suis pas mon chef ^^.

    Bon je vais me debrouiller avec les infos recu merci beaucoup

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par jorrie Voir le message
    bien d'accord mais je ne suis pas mon chef ^^.

    Bon je vais me debrouiller avec les infos recu merci beaucoup
    Je pense que votre vision est faussée pour les raisons suivantes :

    - ce n'est pas le boulot d'une application de gestion de faire la supervision du SI (si chaque appli se met à faire sa supervision dans son coin, ça va devenir très vite le bordel).

    - superviser les DBMS est une idée particuliérement tordue : il faut s'assurer de la fiabilité du canal de supervision => retour à la case départ.

    - qui supervise le superviseur ?

    - S'assurer de la haute disponibilité du/des serveurs de DBMS ne relève pas du bricolage; il y deux méthodes éprouvées pour cela : le mirroring et le clustering. Tout le reste ne relève que de solutions "bricolo".

    - Si vous avez besoin de superviser les DBMS sous peine de problèmes c'est que votre achitecture applicative est fumeuse au moins pour ce qui est du traitement des erreurs et de la gestion des transactions.

    Bref que votre appli s'applique à faire son boulot et notamment à gérer les cas d'erreurs et les transactions proprement et qu'elle laisse le cockpit de supervision et les DBMS faire le leur.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    imaginons que je perd totalement l'accès à ma base de donnée, si je ne permet pas au logiciel de revenir dans sa situation initiale , l'utilisateur va continuer à ouvrir des fenetres ou executer des traitements alors qu'il faudrait mieux que je lui demande de se reconnecter et que tous ce qui etait ouvert au préalable soit fermé comme à l'ouverture du logiciel

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par jorrie Voir le message
    imaginons que je perd totalement l'accès à ma base de donnée, si je ne permet pas au logiciel de revenir dans sa situation initiale , l'utilisateur va continuer à ouvrir des fenetres ou executer des traitements alors qu'il faudrait mieux que je lui demande de se reconnecter et que tous ce qui etait ouvert au préalable soit fermé comme à l'ouverture du logiciel
    Mais vous n'avez pas de messages d'erreurs sur votre logiciel ????

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 06/07/2021, 03h25
  2. [debutant] etat d'une connexion
    Par nadhem dans le forum JDBC
    Réponses: 4
    Dernier message: 25/07/2006, 18h07
  3. Réccupération du mot de passe d'une connexion
    Par zinaif dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/12/2002, 18h32
  4. [Réseau] Créer une connexion Internet
    Par Tranber dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 17/10/2002, 17h01
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo