Bonjour à toutes et tous,

j'ai deux questions:

Je suis face à un problème de connexion entre une application delphi et une base de donnée mysql. l'objet de mon application consiste à sauvegarder des paramètres sur une base mysql distante sur un serveur (pas en local).

Dans un premier temps, pour développer cette application, j'ai installé un serveur mysql (5.0.43 en local) et j'ai pu très simplement me connecter à partir d'une application "test" ( dbgrid +composants dbexpress). La connexion s'effectue bien (chargement de la library libmysql.dll adéquate, etc, ...) et j'arrive à "lire" la base à partir de requêtes SQL simples.

J'utilise les composants dbexpress dans cette ordre:
SQLconnection1<==>sqlQuery1<==>SQLdatasetprovider1<==>clientdataset<==>datasource

Lors de mon application de test mes requêtes étaient intégrées dans le champs "SQL" du composants SQLQuery (Twindstring). Une seule requête à la fois (affichage: par exemple show table ou insert ou ...)

J'ai transposé cette application test dans mon programme principale qui doit insérer différentes données dans la table, voici une partie du code:

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
 
 
//------------------------------------------------------
//----------chargement à partir d'un fichier de connexion
//------------------------------------------------------
SQLConnection1.LoadParamsFromIniFile(ExtractFilePath(Application.Exename) + '\Parametre.ini');
 SQLConnection1.Connected := True;
 
//-----------------------------------------------------
//-----------------insertion de données----------------
//-----------------------------------------------------
      with sqlQuery1 do
    begin
      Close;
      SQL.Clear;
      sql.Add('show tables');
      sqlquery1.SQL.Add('INSERT INTO datatable (Id_data, col1, col2) VALUES ('', (edit5.Text), (Edit9.Text))' ;
      showmessage(sqlquery1.SQL.Text);
      ExecSQL;
    end;
Ce code me renvoie l'erreur suivante: 'raised exeption class TDBXError with message 'Unknown MySQL server host 'ServerNAme' (11001)' ,alors que:
1- m'a connexion est correcte ( j'affiche les paramètres de connections de l'application base ok, tables ok, log, pass....OK),
2- avant compilation le dbgrid affiche bien les valeurs du "datasource"
3-la library libmysql.dll est compatible

Comment se fait il que le compilateur m'affiche un message d'erreur du serveur alors que je suis bien connecté?


Autre question, pourquoi est 'il nécessaire de pré-remplir le SQLquery avant la compilation, en fait bien que je fasse un SQL.clear, je me retrouve toujours sur la "seconde ligne" d'envoi de la requête du champs Twindstring de sQLQuery1.SQL une fois le revenu à delphi après avoir compiler le programme une première fois. Du coup je ne peux pas doubler mes requêtes!!!

exemple:
un simple Tbutton envoie la requête "show tables", si je re-clique dessus un message d'erreur apparait m'informant que la syntaxe n'est pas respecté, ce que je constate en effet inspectant le champs SQLQUERY1.SQL dan sla fenêtre de code: le prompt est sur la seconde ligne (il y a une retour charriot sur la première ligne) forcément il ne peut pas lancer la requête "vide" de la première ligne.

je pense avoir été assez précis dans ma description, et j'espère qu'une âme charitable pourra m'expliquer doit provient mon erreur.

merci D'avance.