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 :

Récuperer le nombre de ligne d'une requete SQL


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Récuperer le nombre de ligne d'une requete SQL
    Salut à tous.
    ça fait des heures que je songe comment réussir mon code.
    Je veux récupérer le résultat d'un Count(*) d'une requête, mais ça marche pas.
    Voici ma classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private int Execute_Select(string requeteString)
    {
    var connString = "....Chaine de connection...";
    SqlConnection conn = new SqlConnection(connString);
    conn.Open();
    SqlCommand cmd = new SqlCommand(requeteString, conn);
    int result = (Int32)cmd.ExecuteScalar();
    return result;
    }
    Plus loin dans le programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string v_sql_search_mail = "SELECT COUNT(*) FROM .....";
     
    if (Execute_Select(v_sql_search_mail)!=0)
    {
    MessageBox.Show(" Cette adresse Email est déjà inscrite chez nous!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    v_test_saisi = false;
    return;
    }
    Lors de l'exécution, j'ai toujours le message de la BOX, quand j'ai affiché le contenu de "Execute_Select(v_sql_search_mail)", elle me donne 1... Je ne comprend rien...
    Merci à vous.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    vu de loin ca a l'air plutot correcte...

    tu as testé ta requette en base?

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Utilise la balise CODE, ton post sera plus lisible...
    Sinon, ta question n'est pas très claire.
    Si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Execute_Select(v_sql_search_mail)
    est différent de zéro, il est normal que tu vois ton texte puisque tu vas forcément rentrer dans le contenu de ta clause "if".
    Il faut probablement que tu ajoutes un else dans lequel, si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Execute_Select(v_sql_search_mail)
    est différent de zéro, tu affiches la valeur retournée par ta requête plutôt que ton message.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Merci à Deepin pour la mise en forme code.
    L'idée, c'est de chercher si l'adresse mail entrée par un nouvel utilisateur est déjà inscrite dans la base de donnée, on lui affiche un message.
    Mais quand je teste avec une adresse mail inexistante dans la base, j'ai le message de la BOX.
    Sinon la requête marche très bien, la voila:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string v_sql_search_mail = "SELECT COUNT(*) FROM [dbo].[XXOA_TABLE_MAILS] WHERE [MAIL]='" +Email_TextBox.Text.ToString() + "'";

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    Test comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private int Execute_Select(string requeteString)
    {
    var connString = "....Chaine de connection...";
    SqlConnection conn = new SqlConnection(connString);
    conn.Open();
    SqlCommand cmd = new SqlCommand(requeteString, conn);
    int result =0;
    result = (Int32)cmd.ExecuteScalar();
    return result;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string v_sql_search_mail = "SELECT COUNT(*) FROM .....";
     
    if (Execute_Select(v_sql_search_mail)>0)
    {
    MessageBox.Show(" Cette adresse Email est déjà inscrite chez nous!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    v_test_saisi = false;
    return;
    }

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    Hmmm vu ce qu'il y a dans la parenthese :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Execute_Select(v_sql_search_mail)>0)
    le resultat de Execute_Select devrait implicitement etre converti en int...

    J'avous ne pas trop voir où est le probleme, je suspecte plus le comportement de la requette. Mais c'est toujours moins facile de trouver quand on est pas face au debugger...

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    Hmmm vu ce qu'il y a dans la parenthese :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Execute_Select(v_sql_search_mail)>0)
    le resultat de Execute_Select devrait implicitement etre converti en int...

    J'avous ne pas trop voir où est le probleme, je suspecte plus le comportement de la requette. Mais c'est toujours moins facile de trouver quand on est pas face au debugger...

    juste au cas où, @drissi : tu es bien conscient que les emails doivent dans ton code etre parfaitement identique? que si dans la base tu as fais des tests en mettant l'email en majuscule, ou avec un espace apres, tu n'auras pas le meme resultat que dans ton code? (bete à dire mais personne n'est à l'abris de ce genre d'erreur stupide et moi le premier...)

    du coup j'en profite pour rajouter :

    est différent de zéro, il est normal que tu vois ton texte puisque tu vas forcément rentrer dans le contenu de ta clause "if".
    Il faut probablement que tu ajoutes un else dans lequel, si
    Code :Sélectionner tout - Visualiser dans une fenêtre à partExecute_Select(v_sql_search_mail)est différent de zéro, tu affiches la valeur retournée par ta requête plutôt que ton message.
    ca me parrait inutile, dans son code, si tout va bien il continue, sinon il affiche un message d'erreur. Par contre dans son cas j'afficherai en effet le resultat en cas de pb (histoire de comprendre ce qui se passe):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int resulat = Execute_Select(v_sql_search_mail);
    if(resultat >0)
    {
         MessageBox.Show(String.Format"Email Deja inscrit ({0})",resultat);
    }

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    ça a marché.
    Bon, j'ai fait une erreur car j'ai laissé ma requête qui contient une adresse mail figée que j'ai renseigné, et j'ai changé le "!=0" vers ">0"...
    Merci à vous pour vos réponses.

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

Discussions similaires

  1. nombre de lignes d'une requete
    Par manguigs dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/02/2010, 06h20
  2. Réponses: 8
    Dernier message: 03/06/2009, 11h09
  3. recuperer le nombre de ligne d'une requete
    Par Khalid.bounouader dans le forum ASP.NET
    Réponses: 4
    Dernier message: 08/10/2008, 17h37
  4. connaitre le nombre de ligne d'une requete
    Par moimemessssssssss dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/06/2008, 19h35
  5. [C#][Débutant] Connaitre le nombre de lignes d une requete SQL
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/04/2006, 00h48

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