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

VB.NET Discussion :

SqlException.ErrorCode : code inconnu au bataillon.


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut SqlException.ErrorCode : code inconnu au bataillon.
    Hello,

    Je voulais faire une gestion d'exception sql propre (pour une fois ) et donc j'ai commencé par faire quelque chose dans ce goût-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                    Try
                        'do stuff involving DB here
                    Catch ex As SqlClient.SqlException
                        MsgBox(ex.Message)
                        MsgBox(ex.ErrorCode)
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
    Avec ça, je comptais récupérer les codes d'erreur en provenance de la DB histoire d'afficher le message qui va bien. Seulement je reçois le code "-2145232060".
    Or, si je regarde ici, ce code n'existe pas.

    D'où vient donc ce code que j'obtiens ?

    Une idée que je viens d'avoir en écrivant et que je dois encore creuser : J'utilise XACT_ABORT dans la procédure stockée que j'appelle dans le Try. Cela aurait-il un rapport ?
    Kropernic

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    à vue de nez je dirais que ton ErrCode ne vaut rien (non initialisé).
    A quel moment récupères-tu cette valeur ?
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    à vue de nez je dirais que ton ErrCode ne vaut rien (non initialisé).
    A quel moment récupères-tu cette valeur ?
    Il me semble que le bout de code que j'ai mis est clair non ??? Dans le try (qui se trouve dans la couche GUI), y a une ligne qui fait un appelle à une fonction/méthode de la BLL qui elle-même appelle une fonction/méthode de la DAL.

    L'erreur se produit donc dans la DAL et est remontée jusqu'à la GUI.

    Et cela vient de me donner une idée... qui n'aboutit à rien.
    Kropernic

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Et quel est le message de l'exception ?
    Ça donne quoi si tu set XACT_ABORT sur OFF ?
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Et quel est le message de l'exception ?
    Ça donne quoi si tu set XACT_ABORT sur OFF ?
    Le message est une violation de contrainte d'unicité (sur un index unique filtré). Le message est tout à fait cohérent avec le test que j'effectue.

    Si je mets XACT_ABORT sur OFF, la transaction n'est pas rollbackée après cette erreur et va donc effectuer la/les instruction/s suivante/s et il n'en est juste pas question ^^.
    Je ne vois rien sur le net qui indique un quelconque effet de XACT_ABORT sur le code d'erreur renvoyé. Pour être sûr, j'ai tout de même posé la question dans la section Dev du forum SQL SERVER.
    Kropernic

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bon, je crois que j'ai trouvé.

    Dans la classe SqlException, il y a une propriété Errors de type SqlErrorCollection. Déjà, cela veut dire qu'il pourrait y avoir plus d'une erreur retournée d'un coup (WTF ?!)

    Si je boucle sur cette collection (qui ne contient qu'un élément dans mon cas), je récupère alors bien mon message d'erreur et un code d'erreur cohérent (2601 dans mon cas) avec le message d'erreur.

    Fallait le savoir !!
    Kropernic

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

Discussions similaires

  1. documentation de code inconnu
    Par christouf dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 22/08/2008, 10h46
  2. Compréhension d'un fragment de code inconnu
    Par Cyberstein dans le forum Langage
    Réponses: 5
    Dernier message: 22/01/2008, 18h43
  3. [Microstrategy] Inconnu au bataillon ?
    Par kalyparker dans le forum Microstrategy
    Réponses: 2
    Dernier message: 14/09/2007, 17h00
  4. Réponses: 3
    Dernier message: 26/10/2005, 09h58
  5. ".h" inconnu au bataillon...
    Par yoko2 dans le forum MFC
    Réponses: 1
    Dernier message: 20/09/2005, 15h07

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