Connexion à une base de donnée MySQL

Résolu
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010 - 23 sept. 2008 à 17:30
philc94 Messages postés 13 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 mars 2009 - 2 déc. 2008 à 20:56
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

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
23 sept. 2008 à 19:14
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
3
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
23 sept. 2008 à 21:33
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
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
23 sept. 2008 à 22:23
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
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
24 sept. 2008 à 13:37
Il me mets access dinied maintenant ><
Je vais chercher encore un peu ...
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
24 sept. 2008 à 16:11
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
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
24 sept. 2008 à 16:20
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
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
24 sept. 2008 à 16:40
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
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
24 sept. 2008 à 21:01
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
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
1 déc. 2008 à 21:49
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
0
philc94 Messages postés 13 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 mars 2009
1 déc. 2008 à 22:02
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
0
kopierreko Messages postés 139 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2010
2 déc. 2008 à 16:38
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.
0
philc94 Messages postés 13 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 mars 2009
2 déc. 2008 à 19:43
Merci beaucoup, je vais regarder ca et je te dirai si je trouve la reponse a tes questions.
0
philc94 Messages postés 13 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 29 mars 2009
2 déc. 2008 à 20:56
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
0
Rejoignez-nous