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 :

tester l'existance d'une donnée dans une BDD


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut tester l'existance d'une donnée dans une BDD
    Bonjour tous le monde voila pour mon projet de BTS IRS ( système de gestion de fret ) je doi réaliser un programme en C++ permettant d'identifier une palette. Pour cela j'ai besoin à l'aide d'une requete de savoir si le code barre saisie éxiste dans ma table

    jai donc fai cette requete:

    "SELECT * FROM palette WHERE Code_Barre ='"+Edit1->Text+"'"

    pour obtenir toutes les données de ma palette mais est il possible de tester le composant Query ou autre chose pour savoir si la palette éxiste ( jentend par la une commande qui me retourne un bouléen afin que je puisse afficher cette palette n'est pas référencé ou l'inverse) ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par rpg59 Voir le message
    Bonjour tous le monde voila pour mon projet de BTS IRS ( système de gestion de fret ) je doi réaliser un programme en C++ permettant d'identifier une palette. Pour cela j'ai besoin à l'aide d'une requete de savoir si le code barre saisie éxiste dans ma table

    jai donc fai cette requete:

    "SELECT * FROM palette WHERE Code_Barre ='"+Edit1->Text+"'"

    pour obtenir toutes les données de ma palette mais est il possible de tester le composant Query ou autre chose pour savoir si la palette éxiste ( jentend par la une commande qui me retourne un bouléen afin que je puisse afficher cette palette n'est pas référencé ou l'inverse) ?
    Normalement, la fonction qui te permet d'envoyer la requête SELECT à ta base de donnée doit te renvoyer quelque chose qui contient le nombre de lignes retournées par la base de données. Si ce nombre de ligne est 0, alors la donnée n'est pas contenue.

    Note: ton code est sensible à ce qu'on appelle une injection SQL. Que faire si Edit1->Text contient la chaine suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    10'; SELECT * FROM user_list WHERE 'x'='x
    (ou tout autre commande dangereuse)
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Oui mais qu'est ce que je doit tester ? une propriété de mon composant ADOQuery ou autre chose ?

    mon code va se présenter simplement :

    if("resource pas trouvé")
    Label2->caption="palette non référencé"
    else
    Label2->caption="palette référencé"

    donc j'aimerais savoir qu'est que je doit mettre dans mon 'if'

    merci d'avance

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    L'avantage des booléens, c'est qu'il s'adaptent à peu de chose près à tous les types primitifs.

    En effet, selon la bibliothèque que tu vas utiliser pour gérer ta BDD, la fonction permettant d'effectuer la requête sera potentiellement différente, mais, quoi qu'il en soit, le retour correspondra d'une manière ou d'une autre soit au nombre d'enregistrements trouvés, soit à une collection contenant ces enregistrements... et que la collection en question connait sa taille.

    Et, pour notre plus grand bonheur à tous, il se fait que 0 vaut, transformé en booléen, vaut "faux" alors que toute autre valeur vaut... vrai.

    Au final, si la fonction renvoie le nombre d'enregistrement, tu peux donc effectuer un test sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(query(requete))
    {
        //aucun enregistrement trouvé
    }
    ou de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(query(requete)==0)
    {
        //aucun enregistrement trouvé
    }
    ou, si la fonction renvoie une collection d'enregistrements (et en considérant pour l'exemple que l'on peut en récupérer la taille avec la méthode size), travailler sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    recup=query(requete);
    if(recup.size())
    {
        //aucun enregistrement trouvé
    }
    ou de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(recup.size()==0)
    {
        //aucun enregistrement trouvé
    }
    Dans chaque cas, le premier code est strictement correspondant au deuxième, mais j'avouerai que j'ai une préférence marquée pour les deuxièmes possibilités, simplement parce qu'elles sont bien plus explicites sur le fait que... le nombre d'enregistrement vaut 0
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Bon, soyons pragmatique maintenant: quelle langage (C++, j'espère...), quelle variante du langage (C++ Builder, Visual C++ ou autre), quelle API ou framework (MFC, BCL, ...) ?

    Sans ces informations, difficile de te donner une réponse plus précise que celle de koala01.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [WD16] Lecture donnée d'une base dans une valeur d'une autre base
    Par gef13 dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2011, 09h05
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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