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 de requetes avec SQLQuery


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut Probleme de requetes avec SQLQuery
    Bonjour,

    j'essaye de faire une simple connection a une base avec un sqlConnection (qui se connecte bien) et une requete avec un SQLQuery (de type :select * from test) j'ai pris l'exemple du tutoriel : http://jmcarayon.developpez.com/dbexpress/

    Malheuresement au moment ou j'effectue la requete une erreur est rattapée de type EdatabaseError 'You have an error in your SQL syntax error near' ;

    Lorsque que j'inspecte mon objet sqlquery.sql.text, lors de l'éxécution, celui ci a pour valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'select * from test;'#$D#$A
    est ce normal ? ou bien est cette chaine bizare a la fin qui me fait planter la requete ?
    si oui comment la supprimer ?d'ou vient elle ?

  2. #2
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    #$D#$A
    Je sais pas si c'est ce qui te fait planter mais il sagit d'un retour chariot suivi d'une nouvelle ligne.

    Si c'est ta seule ligne tu peux essayer de supprimer tout ce qui est derriere le ';'

    Attention le .NET sur PDA peut causer des chutes de cheveux

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Harry
    Si c'est ta seule ligne tu peux essayer de supprimer tout ce qui est derriere le ';'
    J'aimerais bien mais comment stp ? Qd je fais évaluer/modifier et que je supprime ces codes ils réapparaissent automatiquement derriere.

    Pourtant la mon code est vraiemnt tout con :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      try
       Sqlconnection1.connected := true;
       SQLQuery1.Close;
       SQLQuery1.SQL.Clear;
       SQLQuery1.SQL.text :='select * from test;';
       SQLQuery1.open;
       text.Lines.Add(SQLQuery1.FieldByName('REF').AsString);
       Sqlconnection1.connected := false;
     except
            on E : Exception do showmessage(E.message);
     end;

  4. #4
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    Ahh, je pensais que tu l'avais mi en dur dans le compo avec un copier/coller, ton code ma l'air bon.

    Esaye toujours de faire un SQLQuery1.SQL.Add(...... au lieu d'affecter directement la propriété text.

    par contre verifie qu'il n'y a pas de code SQL dans le compo a la création juste au cas ou (a cause du 'Sqlconnection1.connected := true;').

    Attention le .NET sur PDA peut causer des chutes de cheveux

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Nan nan il n'y a rien à faire : les caractères #$D#$A ne posent pas de problème à Delphi ; ton erreur vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLQuery1.SQL.text :='select * from test;';
    Il me semble que tu devrais plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLQuery1.SQL.Add('select * from test');
    SQL.Text sert à renvoyer la requête SQL sous forme de chaine ; en revanche, utilises SQL.Add pour constituer ton expression SQL.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Alors je viens d'essayer avec le add mais ca ne marche pas mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try
       Sqlconnection1.connected := true;
       SQLQuery1.Close;
       SQLQuery1.SQL.Clear;
       SQLQuery1.SQL.add('select * from test;');
       SQLQuery1.open;
       text.Lines.Add(SQLQuery1.FieldByName('REF').AsString);
       Sqlconnection1.connected := false;
    except
       on E : Exception do showmessage(E.message);
    end;
    et ca me sort exactement la même erreur :'(

    ps : j'ai rajouté le ; a la fin de la requete car je ne sais pas si c'est un oubli de ta part mais si je ne le met pas il me renvoie une erreur 'taille de champ incorrecte'

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Chose intéressante ou pas :
    Dans mon inspecteur d'objet il y a un gros point d'interrogation rouge sur rond jaune devant ma SQLQuery...

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Floverdoz
    ps : j'ai rajouté le ; a la fin de la requete car je ne sais pas si c'est un oubli de ta part mais si je ne le met pas il me renvoie une erreur 'taille de champ incorrecte'
    d'avoir enlevé le ; et que ca te donne une erreur de ce type, c'est que le problème ne vient pas de delphi mais de ta base de données. Est ce que ta base ne serait pas une base MYSQL par hasard ? Si oui, tu ferais bien de vérifier si un de tes champs a pas une valeur qui execède la taille autorisée
    (LE gros pb de MYSQL c'est de pouvoir entrer plus dans du moins )
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Je travaille effectivement avec une base MySQL mais ma table test, est des plus simples il me semble :
    elle contient une colonne ref qui est un int(5) et c'est tout .il ya trois champ dedans qui ont pour valeur :2 ,5 et 6.
    Je viens de changer en int(11) et le probleme est le même.

    D'autant plus que si j'essaye un :

    SQLQuery1.SQL.Add('create table test2(id int(11),ref varchar(50));');
    Sqlquery1.execsql(true);

    Et bien j'a ile droit a la même erreur.

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Quelle version de delphi ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Delphi 7 enterprise et Mysql 3.23.53

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Les caractères #$D#$A ne gênent pas Delphi et ton erreur vient (très certainemen) du SQL.Text au lieu du SQL.Add comme te l'indique Floverdoz
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  13. #13
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Est ce que tu as la bonne version du libmysql.dll pour fonctionner avec dbexpress ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    C'est une bonne question ...
    j'ai la version que j'ai trouvé dans c:\mysql\lib\opt et que j'ai copié ds windows\system32 car sinon il me disait qu'il ne la connaissait pas.
    Il existe plusieurs versions ? alors jvais pet en chercher une nouvelle.

  15. #15
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Floverdoz
    C'est une bonne question ...
    j'ai la version que j'ai trouvé dans c:\mysql\lib\opt et que j'ai copié ds windows\system32 car sinon il me disait qu'il ne la connaissait pas.
    Il existe plusieurs versions ? alors jvais pet en chercher une nouvelle.
    Fait une recherche sur dbexpresse et mysql sur le forum tu auras surement une piste
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    J'ai bien regardé tous les posts , j'ai copié libmysql.dll et mysql.pas dans mon répertoire de travail, j'utilise en plus alors que ca marchait sans (du moins pour la connec)
    Je surveille ma base avec mysqlfront et je vois bien une connection arriver qd je lance mon programme mais la requete ne marche toujours pas.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Argh
    Je viens d'essayer une requete (avec sqlQuery.add) de type 'INSERT INTO TEST VALUES (12)' (notez qu'il n'y a pas de point virgule et ca a marché.)

    Le probleme est donc bien un probleme de type :" taille de champ incorrect" qd je fais un select ...

    Donc que dois spécifier a ma table ( ou a delphi) pour ne plus avoir ce probleme ? et pouvoir faire des select ?

    Merci a ceux qui ont déja répondu et surtout a ceux qui vont répondre maintenant ^^.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Alors pour ceux que ca intéresse encore je progresse ... (dans la dévcouverte d'erreurs ... lol )
    Le select sur les tables déja existantes me renvoie tjs le meme probleme, mais après avoir fait un create et plusieus insert de cette nouvelle table sans encombre j'essaye de faire un select sur cette belle nouvelle table et la miracle une magnifique nouvelle erreur : 'dbexpress : handle incorrect'

    J'ai regardé les autres réponses (jai copié le dbexMys.dll et le dbexmysql.dll dans le répertoir de mon projet) mais l'erreur reste toujours .

    Une idée ?

  19. #19
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Vérifie peut être tes privilèges au niveau de MYSQL, autant tu as le droit de faire des insert mais pas des select.

    Pour ma part, j'ai D2005, et j'ai vite laissé tomber DBExpress avec MYSQL, j'ai préféré l'achat de composants (pour la boite ou je bosse) ou l'utilisation des composants ADO avec les drivers MYSQL ODBC (prog perso).
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Pour les privileges pas de problemes j'ai essayé en root et la je suis avec un user a qui j'ai "grant all privileges"

    Ouais tu as peut etre raison jvai ptet laisser tomber dbexpress, c'était juste pour me familiariser avec son utilisation, mais si la moitié des choses ne fonctionnent pas ...

Discussions similaires

  1. Probleme de requetes avec paramètre
    Par Jhulk dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/04/2006, 17h59
  2. probleme de requete avec un champ datetime
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/02/2006, 14h32
  3. Réponses: 2
    Dernier message: 02/12/2005, 10h53
  4. [Hibernate]Probleme de requete avec un "or"[\Hiber
    Par crips dans le forum Hibernate
    Réponses: 5
    Dernier message: 07/07/2005, 03h28
  5. probleme de requete avec reprise du resultat :
    Par Maxoo dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/12/2004, 20h05

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