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

Bases de données Delphi Discussion :

probleme avec requete sql aime pas les strings


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut probleme avec requete sql aime pas les strings
    Salut, j'ai un probleme depuis maintenant quelques jours que j'arrive pas à résoudre, voilà, quand je fais une requete SELECT xxx FROM yyy WHERE zzz avec un "zzz" numerique, tout va bien par contre quand le "zzz" est alphanumerique, la requete plante, voilà le code en cause, si qqn peut me venir en aide.
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    {Initialisation des variables de connection à la base de donnée} 
     
    user:='root'; 
    pwd:=''; 
    host:='127.0.0.1'; 
    port:=3306; 
     
    {Initialisation de la connection base de donnée} 
     
    MySQL := mysql_init(nil); 
    mysql_options(mysql,MYSQL_OPT_COMPRESS,nil); 
     
    {Connection base de donnée} 
     
    if mysql_real_connect(mysql, pChar(host), pChar(user), pChar(pwd), nil, port, nil, 0)= nil then showmessage('Connection impossible'); 
     
    {Selection de la base de donnée} 
     
    if mysql_select_db(mysql, pChar(dbname))<>0 then showmessage('Selection base impossible') ; 
     
    {Controle remplissage combo} 
     
    if combobox1.Text = '' then 
    begin 
    showmessage('Spécifier le mode de recherche!'); 
    end; 
     
    {Requete de recherche} 
     
    try 
    if ComboBox1.Text='Code rayon' then 
    begin 
    if mysql_query(mysql, pChar('SELECT * FROM '+table+' WHERE code = '+Edit2.Text ))<>0 then 
    ShowMessage('requête selection plantée'); 
    resultat:=mysql_use_result(MySQL); 
    row := mysql_fetch_row(Resultat); 
     
    {Remplissage des cellules avec les données} 
     
     
    for i := 1 to 6 do 
    begin 
    StringGrid1.Cells[i,1]:= row[i]; 
    end; 
     
    {Affichage du nombre d'article en stock} 
     
    if mysql_query(mysql, pChar('SELECT COUNT(*) FROM '+table+' WHERE code = '+Edit2.Text )) <> 0 then showmessage('requete compteur plantée'); 
    article:=mysql_use_result(MySQL); 
    nombre := mysql_fetch_row(article); 
    Edit1.Text := nombre[0]; 
    end
    Donc je résume, si le contenu de mon Edit2.text est numerique "123559" tout fonctionne par contre quand c'est de l'alphanumerique "SZOF5547", ça plante.
    Je vois vraiment pas où je me suis planté et pourquoi ça marche pas.
    Au fait, j'ai delphi 7 personnel et je gère ma partie sql avec mysql.pas et la librairie officielle libmysql.dll.

    Merci de votre aide.
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  2. #2
    Membre actif Avatar de seb.49
    Profil pro
    ljgdfgdf
    Inscrit en
    Octobre 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ljgdfgdf

    Informations forums :
    Inscription : Octobre 2002
    Messages : 291
    Points : 209
    Points
    209
    Par défaut
    c'est logique, il faut faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE code = "' +Edit2.Text + '"'

  3. #3
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 106
    Points : 97
    Points
    97
    Par défaut
    En SQL standard le code c'est plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE code = ''' +Edit2.Text + ''''
    avec des ' au lieu de "

  4. #4
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    merci pour vos reponses, j'ai fais avec quotedstr() qui remplace les quotes, ça marche
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

Discussions similaires

  1. [MySQL] probleme avec requete SQL
    Par hi-wave dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 01/03/2012, 21h03
  2. probleme avec requete SQL dans code VB6
    Par captainamerica75 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/05/2007, 21h36
  3. Telnet n'aime pas les String ?
    Par Nasky dans le forum Développement
    Réponses: 4
    Dernier message: 02/03/2007, 13h57
  4. [C# 2.0] Probleme avec requete SQL
    Par Sion_Sempai dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/09/2006, 23h45
  5. Réponses: 3
    Dernier message: 18/09/2006, 20h55

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