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 :

Problème méthode COUNT [Débutant]


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Points : 30
    Points
    30
    Par défaut Problème méthode COUNT
    Bonjour,

    J'ai un petit projet que j'ai développé en 2 petites semaines, un outil pour enregistrer des commandes, les modifier, les visualiser, les extraire sous excel, etc..

    Cependant, quand je veux récupérer le nombre de commandes qu'il y a dans ma base de données, ma méthode ne fonctionne pas.. J'ai essayé ma requête dans MySql, elle fonctionne, j'ai essayé de récupérer la valeur avec un reader, avec un scalar, sans succès.. Alors soit je suis pas encore réveillé, soit un truc spécifique que j'ai pas pigé..

    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
     
    public int CountCommande(int year)
            {
                int nbCommandes = 0;
                try
                {
                    // Ouverture de la connexion SQL
                    this.connection.Open();
     
                    // Création d'une commande SQL en fonction de l'objet connection
                    MySqlCommand cmd = this.connection.CreateCommand();
                    // Requête SQL
                    cmd.CommandText = "SELECT COUNT(*) AS nbCommandes FROM COMMANDE WHERE year(dateC) = @year";
                    cmd.Parameters.AddWithValue("@year", year);
                    nbCommandes = (int)cmd.ExecuteScalar();
     
                    // Fermeture de la connexion
                    this.connection.Close();
                }
                catch
                {
     
                }
                return (int)nbCommandes;
            }

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour ,

    La syntaxe de ta requête me semble correcte et passer par un ExecuteScalar est une bonne chose aussi , tu dit avoir essayé avec un DataReader est tout de même sans succès, le problème doit venir d'ailleurs.
    Debug au pas à pas , il y a peut-être une petite coquille .

    A bientôt.

    EDIT : petits conseils en passant :
    - il est préférable de fermer la connection en dehors du try/catch voir dans un finnaly
    - le cast au niveau du return est inutile non ?
    throw new NoSignatureException();

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    D'abord merci pour ta réponse !

    J'ai donc exécuté pas à pas, il arrive sur le "this.connection.Open()" et psse directement au catch.. Il n'arrive pas à se connecter à la base de données ? Pourtant toutes mes autres méthodes utilisent la même chaîne de connexion et fonctionnent..

    Et oui oui le cast du return c'est inutile, juste une tentative désespérée :')

  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
    Salut,

    try/catcher c'est bien, récupérer l'exception c'est mieux.
    D'ailleurs si t'avais pas try/catché ton prog aurait planté, mais tu aurais eu l'info sur le pb
    Récupère les info de l'exception avec un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
        cnx.Open();
        // blabla
    } catch (Exception ex) {
        MessageBox.Show(ex.Message);
    }
    Ou mieux, mets un point d'arrêt sur la ligne dans le catch et regarde le détail de l'exception dans la fenêtre espion.
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    La connexion n'est pas déjà ouverte?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Merci pour ta réponse.

    Quand je catch l'exeption, il m'affiche -2146233079, j'ai cherché un peu de mon côté et on dirait qu'il n'arrive pas à se connecter à ma base de données.. Mais comme j'ai dis, j'utilise la même chaîne de connexion que mes autres méthodes alors.. Pourquoi ? :')

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Et non ZenZiTone, j'appel juste une autre méthode avant celle-ci, j'ai bien vérifié avoir fermé la connexion à la fin de celle-ci et elle l'est

  8. #8
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Alors , le ex.Message de l'exception est "-2146233079" (vraiment ? ), ta chaîne de connexion est dans ta propriété connection comme tu as du le faire dans d'autres requêtes ...
    Fouille les détails de l'exception avec l'espion comme l'a dit Jojopmk , il doit y avoir des informations.
    throw new NoSignatureException();

  9. #9
    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
    "-2146233079" ressemble plus à un entier non initialisé qu'un message d'exception ... Si tu utilises le connecteur MySQL, type directement ton exception en MySqlException, l'info sera peut-être plus intéressante (ou regarde l'InnerException de l'Exception générique).
    Plus je connais de langages, plus j'aime le C.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    C'est le HResult de l'exception et pas le message en effet.

    Avec les espion je me rend compte que IsPasswordExpired, ServerThread et ServerVersion lèvent une exception.. Le message est le même pour les 3, "la référence d'objet n'est pas définie à une instance d'un objet"

  11. #11
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Et que dit le Message ?
    throw new NoSignatureException();

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    "la référence d'objet n'est pas définie à une instance d'un objet"

  13. #13
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Tu as une instant d'objet à null alors qu'il le devrais pas , this.connection , tu as vérifié ? ou alors une de ses propriétés essentiel au Open() . Verifie this.connection .

    On avance , on avance !
    throw new NoSignatureException();

  14. #14
    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
    Tout pareil que WaterTwelve21 : je pense que this.connection est null, dès que tu tentes d'accéder à un attribut/méthode de cet objet tu as cette exception de levée.
    Plus je connais de langages, plus j'aime le C.

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Mais vous trouvez pas ça bizarre que j'utilise EXACTEMENT la même chose pour la connexion de mes 15 autres méthodes avant et que ça fonctionne nickel et là sur celle-ci, ça me lève une exception ?

    EDIT : Fin par là je veux dire, si ma méthode était fausse, j'aurais eu une exception levée dés ma première méthode.. A moins qu'il y ait un truc qui m'échappe..

  16. #16
    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
    Non, rien de choquant, l'attribut connection pourrait être nullifié avant l'appel à cette fonction (ou non initialisé dans le cadre de l'appel à cette fonction), ce qui ne serait pas le cas pour tes autres fonctions du même genre. A quel moment initialises-tu cet attribut ? Es-tu sûr de ne jamais le passer à null ?
    Plus je connais de langages, plus j'aime le C.

  17. #17
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    De toutes façon c'est pas compliqué de cibler le problème. Tu mets un point d'arrêt au this.connection et un autre dans ton catch.

    Lorsque tu passes sur le premier point d'arrêt, tu vérifies que ta connection n'est "null". Si il n'est pas null, tu laisse filer jusqu'au prochain point d'arrêt et tu regardes le détail de ton exception (ajoute un espion sur "ex").

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Mon attribut connexion est initialisé au début de mon Manager (le fichier dans lequel j'ai regroupé toutes mes méthodes concernant ma base de données), et oui je suis sûr de ne pas l'avoir passé à null puisque j'appel une autre méthode après ma méthode count et celle-ci fonctionne..

  19. #19
    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
    Il me semble qu'on peut aussi mettre des "points d'arrêt conditionnels" sur une variable.
    En gros l'appli s'arrête dès que ladite variable change de valeur.
    Par contre je me rappelle plus de comment on fait.

    edit : "au début de ton Manager", tu veux dire dans le constructeur de ta classe ?
    Plus je connais de langages, plus j'aime le C.

  20. #20
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Ce qu'on ne sait toujours pas c'est si ton this.connection est null ?
    Si oui , vérifie la Call Hierarchy(clic droit sur la prop ) pour retracer le parcours , sinon observe dans les propriétés de connection .

    Ce type d'exception n'est pas compliquée à retrouver .
    throw new NoSignatureException();

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de count
    Par Mat_DZ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/08/2006, 17h18
  2. [EJB2.1 Entity] Problème méthode findAll() avec Jonas 4.7.4
    Par mixouille dans le forum Java EE
    Réponses: 1
    Dernier message: 28/07/2006, 13h06
  3. Problème méthode NUM
    Par Pfeffer dans le forum 4D
    Réponses: 2
    Dernier message: 10/07/2006, 10h17
  4. Problème avec COUNT
    Par LhIaScZkTer dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/01/2006, 03h16
  5. Access/SQL : Problème avec Count
    Par Taurëndil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 16h49

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