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

C# Discussion :

Comment attraper les bonnes exceptions de Sql Server ?


Sujet :

C#

  1. #1
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut Comment attraper les bonnes exceptions de Sql Server ?
    Bonjour!
    Je développe un projet et je me suis confronté à un problème :
    j'ai une méthode "public" qui se connecte à ma base de données (sql server); je voudrais pouvoir catcher la bonne exception quand par exemple l'utilisateur essaie d'insérer une clé en double ou ... telle autre erreur!
    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    C'est pas SqlException ?

  3. #3
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Oui j'ai fouiné la bas mais j'ai pas eu ce que je voulais : pouvoir spécifier tel ou tel cas; ou bien dois-je me contenter de SqlException tout court?

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Il y a une propriété ErrorCode. Plusieurs erreurs peuvent déclencher la même exception mais avec un code différent.

  5. #5
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Je n'arrive à avoir qu'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch(SqlException)
    {
    }
    ou un
    ...

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    regarde les propriétés de ta SQLException quand tu en catch une
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  7. #7
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    regarde les propriétés de ta SQLException quand tu en catch une
    Suis-je bête??
    J'avais pas instancié SqlException
    xa marche!

  8. #8
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par fally Voir le message
    Suis-je bête??
    J'avais pas instancié SqlException
    xa marche!
    J'ai parlé trop vite!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SqlException exc = new SqlException();
    catch(exc.InnerException)
    {
    }
    Erreur : Impossible d'atteindre SqlException en raison de son niveau...

  9. #9
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    je comprend même pas ce que tu fais
    pourquoi tu créé toi l'exception? c'est quand tu fais ta requete en base que tu as l'exception. ensuite, le errorcode se trouve p-e dans l'exception auto générée mais ca peut aussi être un code de retour dans la procedure stockés return-1, return -2, etc
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  10. #10
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    je comprend même pas ce que tu fais
    pourquoi tu créé toi l'exception? c'est quand tu fais ta requete en base que tu as l'exception. ensuite, le errorcode se trouve p-e dans l'exception auto générée mais ca peut aussi être un code de retour dans la procedure stockés return-1, return -2, etc
    Oui j'avoue que je m'embrouille un peu là
    Au cas où le error code est dans l'exception comment dois-je procéder?
    Merci

  11. #11
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Alors pour faire court, une exception ça se gère comme ça :

    try
    {
    //code pouvant générer une exception
    }
    catch( TypeException ex )
    {
    //code permettant de réagir à une exception
    }
    TypeException est le type de l'exception à traiter, dans ce cas une SQLException. Une exception est avant tout un objet en .Net comme un autre, ce qui signifie qu'elle contient différentes variables, propriétés et méthodes auquel tu peux accéder grâce à la référence récupérée dans le bloc catch.

    Par exemple il peut y avoir
    ex.ErrorCode;
    ex.InnerException;
    ex.Message.

    C'est à toi de voir ensuite l'information qui t'intéresse et de t'en servir.

  12. #12
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Merci pour tes explications (elles sont très bien comprises)!
    Cependant, je voudrais te préciser quelque chose :
    je veux en fait pouvoir afficher mon message personnel quand ce sera un InnerException

  13. #13
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Tu peux créer une méthode qui avale une Exception en paramètre, qui teste son type et ses données (son ErrorCode, son InnerException ou peu importe) et renvoies un String qui est le message d'erreur tout mignon à présenter au client.
    Ce sera mieux qu'une atrocité de message d'erreur SQL qui fait croire au mec que son ordi est en train de prendre feu.

  14. #14
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    J'essaie et je t'en donne des nouvelles!
    Merci

Discussions similaires

  1. comment insérer les caractères spéciaux dans sql server 2005
    Par dev-deb dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 03/10/2010, 13h08
  2. Réponses: 1
    Dernier message: 14/08/2010, 20h41
  3. [C#] Lister les Bases de données (SQL SERVER) d'un poste
    Par justice007 dans le forum Accès aux données
    Réponses: 9
    Dernier message: 21/06/2010, 16h10
  4. Réponses: 1
    Dernier message: 13/03/2008, 17h56
  5. equivalent except en sql server
    Par ykane dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/07/2006, 16h52

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