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

Langage SQL Discussion :

Des datas dans du SQL ?


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Points : 64
    Points
    64
    Par défaut Des datas dans du SQL ?
    Bonjour à tous !

    Je me présente : Tutu, développeur en herbe !
    Actuellement en stage, je rencontre différents problèmes et je m'appuie donc beaucoup sur l'aide de la communauté developpez.net pour m'accompagner dans mon auto-apprentissage !

    Je vous présente mon problème (qui, à mon grand étonnement, n'avait pas l'air d'avoir été posé sur le forum :o )

    Voilà j'ai créé un Form contenant une textbox, un button et une DataGridView !
    J'aimerais faire un évènement sur le button_Click qui permettrait de récupérer l'ID (5386 par exemple) de ma textbox - soit TextBoxIdCrm.Value - et de faire une requête pour afficher dans ma DGV tout les contacts possédant cet ID, soit une requête qui ressemblerait (d'après mes frêles conaissances /!!!\ ) à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "SELECT Contact_Name +' ' " +
    "+ Contact_FirstName AS Contact_Info" +
    ", Contact_Phone " +
    "FROM Contact " +
    "WHERE id = TextBoxIdCrm.Value ";
    (Il y a surement des erreurs, je le sais ! J'ai du m'inspirer d'un code déjà existant et le modifier pour espérer avoir la requête la plus correcte et propre possible)


    En attente d'un grand savant ou de quelqu'un qui tend à le devenir,

    Tutu.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    Là, c'est sûr que cela ne marche pas car, telle qu'elle est écrite, ta requête SQL va chercher un id
    qui serait présent dans une table qui s’appellerait TextBoxIdCrm dans une colonne qui s'appellerait value

    Il faut que tu sortes TextBoxIdCrm.Value pour l'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "SELECT Contact_Name +' ' " +
    "+ Contact_FirstName AS Contact_Info" +
    ", Contact_Phone " +
    "FROM Contact " +
    "WHERE id =  " + TextBoxIdCrm.Value;

  3. #3
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Points : 64
    Points
    64
    Par défaut
    Aussi simple que ça ?!?

    Merci beaucoup !

    PS : Comment as-tu fait pour mettre le code avec cette présentation ? On m'a parlé d'une balise mais je ne vois pas comment l'utiliser

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut
    Pour la présentation du code (que j'avais oublié d'utiliser, merci al1_24 !)
    il faut :
    1) sélectionner le code
    2) cliquer sur le bouton # dans la barre d'outils de mise en page

  5. #5
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Points : 64
    Points
    64
    Par défaut
    c'est noté ! Merci !!!

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Cette syntaxe (concaténation de chaîne de caractères pour gérer un paramètre SQL) est à éviter absolument :
    - Risque d'injection SQL : que se passe-t-il au lieu de mettre "1234" dans la textbox, un utilisateur mal intentionné met "0;delete contact" ? Ça vide tout simplement la table Contact !
    - Contre-performant : la requête est alors "littérale", c'est à dire que le paramètre "1234" fait partie intégrante du plan d'exécution compilé. Ainsi, si on relance la form en demandant l'ID "1235", le SGBD doit recompiler la requête pour déterminer un plan d'exécution.
    - Instable : que se passe-t-il si l'utilisateur tape "mon joli ID" ? Plantage au niveau base de données, qui fait planter ensuite l'application. On met donc un temps énorme à se rendre compte de l'incohérence du paramètre, et on génère des erreurs dans le logs de la base de données pour rien (avec le risque de provoquer un ROLLBACK d'une transaction en cours).

    Bref, on doit TOUJOURS utiliser des requêtes paramétrées :

    http://webman.developpez.com/article...ameter/csharp/

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

Discussions similaires

  1. rajouter des data dans une Base de donnée SQL
    Par el_pilacho dans le forum Accès aux données
    Réponses: 1
    Dernier message: 12/01/2007, 13h42
  2. [Lazarus] Mettre des data dans un exécutable
    Par JoseF dans le forum Lazarus
    Réponses: 3
    Dernier message: 16/10/2006, 18h29
  3. [C#][Débutant] Comment gerer des datas dans une form
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/04/2006, 01h10
  4. [EXCEPTION] Gestion des Exceptions dans PL/SQL
    Par Titouf dans le forum PL/SQL
    Réponses: 4
    Dernier message: 08/02/2006, 01h46
  5. Réponses: 2
    Dernier message: 08/08/2005, 14h54

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