Connexion à une base de donnée MySQL

Résolu
Signaler
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010
-
Messages postés
13
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
29 mars 2009
-
Bonjour tout le monde :)
Voilà, je programme en delphi depuis quelques temps et aujourd'hui j'essaie la relation delphi <=> MySQL ...

Problème: La connexion ne marche apparemment pas alors que j'ai bien testé des connexions avec  d'autres logiciels, ça marche :)

Pour mes premiers essais, j'ai utilisé le code d'un site, qui me parait bien structuré à mon goût, même s'il y a quelques erreurs que j'ai réglé.
( des END en trop )

Code:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, mysql, StdCtrls, DBXpress, DB, SqlExpr;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    mysql: PMysql;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
   mySQLConnection : PMYSQL;

procedure TForm1.FormDestroy(Sender: TObject);
begin
    mysql_close(mySQLConnection);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    mySQLConnection := mysql_init(nil);
    if mysql_real_connect(mySQLConnection, 'psproduction.no-ip.org', '***', '***', 'chat', 0, nil, 0) <> nil then begin
        // Connection réussie
        label1.Caption := '1' ;
    end else begin
        // Echec de connection
        label1.Caption := '0' ;
    end
end;

end.

Le label affiche toujours '0', donc apparemment, la connexion de fonctionne pas, pourquoi , à votre avis ?

Merci,
Pierreko

13 réponses

Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bonsoir

Dans le cas ou là réponse est 0, utilise mysql_error pour obtenir la dernière erreur et donc la raison de la non connexion :

procedure TForm1.Button1Click(Sender: TObject);
begin
    mySQLConnection := mysql_init(nil);
    if mysql_real_connect(mySQLConnection, 'psproduction.no-ip.org', '***', '***', 'chat', 0, nil, 0) <> nil then begin
        // Connection réussie
        label1.Caption := '1' ;
    end else begin
        // Echec de connection
        label1.Caption := '0' ;
        // PAR EXEMPLE
        
ShowMessage( mysql_error(mySQLConnection) ) ;

    end
end;

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

Merci beaucoup !

Voilà l'erreur: Client does not supports authentification protocol request by server; consider upgrading mysql client

Que dois-je mettre à jour ?
Merci déjà pour cette info, ce n'est pas toujours expliqué e t c'est pourtant très important.
Pierreko
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Je crois malheureusement qu'il va falloir encore une nouvelle fois  redire que : "Google est ton ami."
Juste en copiant le message sous google, on obtient le premier lien suivant : lien

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

Il me mets access dinied maintenant ><
Je vais chercher encore un peu ...
Merci
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

Bon, pour mon mysql, j'utilise WampServer et le mysql est en 5.0.51b ( là plus récente ).
Que faut il que je change ?
Je ne comprend pas trop, je pense que c'est le mysql.pas qu'il faut que je change, non ?
Merci
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

Non merci j'ai trouvé, je suis allé dans wamp, j'ai cherché la DLL  libySQL.dll et j'ai remplacé.
Merci à ceux qui m'ont aidé et dsl pour le triple post.
Merci
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

Voilà, j'ai réussi à me connecter à la base de donnée.
J'ai mis dans mon projet un Memo dans lequel je veux faire apparaître le contenu de ma table.
Je voudrais savoir comment ACTUALISER le contenu du Memo ( j'ai mis un timer )
Faire une requête: SELECT * FROM chat.
Ensuite afficher le contenu, et l'actualiser tous les .timer ( je sais faire avec le timer )
Merci
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

Oui désolé mais ça me semblait tellement inutile de recréer un topic pour une question du même sujet, mais je vais le faire.
Merci en tout cas et encore désolé pour ce flood.
Pierreko
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

Non toujours pas ...
-J'arrive à me connecter à la base mysql
-J'arrive à lister le contenu
-Je n'arrive pas à formater comme je veux le résultat du listage
-Je n'arrive pas à faire un INSERT INTO sur la BDD

Je cherche et chercherai toujours jusqu'à trouver et je mettrai ici le code final quand je l'aurais trouvé.
Cordialement,
Pierreko
Messages postés
13
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
29 mars 2009

Ok,  mais est ce qu'il serait possible que tu m'envoie le code que tu as fait pour te connecter a la base mysql et lister e contenu stp?
merci d'avance.
Philippe
Messages postés
139
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2010

Bien sûr:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mysql,
  ExtCtrls, DBXpress, DB, SqlExpr, DBTables;
type
  TForm1 = class(TForm)
    Mm_Msg: TMemo;
    Timer1: TTimer;
    Btn_Send: TButton;
    Image1: TImage;
    Image2: TImage;
    Edt_Pseudo: TEdit;
    Pn_Co: TPanel;
    Lbl_Mypseudo: TLabel;
    Mm_Chat: TMemo;
    msg: TQuery;
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  FMessage: Tstrings;
    FPseudo: string;

implementation

     
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
   mySQLConnection : PMYSQL;
   myRow : PMYSQL_ROW;
   i, j : Cardinal;
   Chp : array of string;
   myRES : PMYSQL_RES;

begin
Timer1.Interval := 1000;
Lbl_Mypseudo.Caption := Edt_Pseudo.Text;
mySQLConnection := mysql_init(nil);
 if mysql_real_connect(mySQLConnection, 'HOST', 'USER', 'PASS', 'DBB', 0, nil, 0) <> nil then begin
        // Connection réussie
        Pn_Co.Color := ClLime;
    end else begin
        // Echec de connection
         Pn_Co.Color := ClRed; end;
        
mysql_query(mySQLConnection, 'SELECT id FROM user WHERE pseudo="FPseudo"');
myRES := mysql_store_result(mySQLConnection);
myROW := mysql_fetch_row(myRES);
                for j := 0 to mysql_num_fields(myRES) - 1 do begin
                    Chp[j] := myRow^[j];

end;  end;

end.
Messages postés
13
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
29 mars 2009

Merci beaucoup, je vais regarder ca et je te dirai si je trouve la reponse a tes questions.
Messages postés
13
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
29 mars 2009

J'ai juste un probleme recurrent et assez enervant. J'ai telelcharge mysql.pas (depuis plusieurs sources differentes) et a chaque fois que je veux compiler, delphi me souligne Winsock dans les 'uses'. Je ne comprend vraiment pas pourquoi ca ma fait ca surtout que je semble etre le seul a avoir cce probleme.
(j'ai borland CodeGer RAD studio delphi 2009)
Merci d'avance