Connexion à une base de donnée MySQL [Résolu]

Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 23 sept. 2008 à 17:30 - Dernière réponse :
Messages postés
14
Date d'inscription
vendredi 28 novembre 2008
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
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
- 23 sept. 2008 à 19:14
3
Merci
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

Merci WhiteHippo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de WhiteHippo
Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 23 sept. 2008 à 21:33
0
Merci
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
Commenter la réponse de kopierreko
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
- 23 sept. 2008 à 22:23
0
Merci
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
Commenter la réponse de WhiteHippo
Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 24 sept. 2008 à 13:37
0
Merci
Il me mets access dinied maintenant ><
Je vais chercher encore un peu ...
Merci
Commenter la réponse de kopierreko
Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 24 sept. 2008 à 16:11
0
Merci
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
Commenter la réponse de kopierreko
Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 24 sept. 2008 à 16:20
0
Merci
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
Commenter la réponse de kopierreko
Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 24 sept. 2008 à 16:40
0
Merci
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
Commenter la réponse de kopierreko
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
- 24 sept. 2008 à 19:48
0
Merci
Merci de respecter le règlement :
<li>On ne pose qu'une question par topic.
</li><li>Penser à cliquer sur le bouton «réponse acceptée» : Ce bouton sert à valider la ou les réponses qui conviennent au problème indiqué. Il sert aussi de remerciement pour les membres qui ont apporté la/les bonnes réponses. Enfin une réponse validée est bien plus facile à retrouver lors de recherches sur le forum. N'oubliez pas qu'un forum ne sert pas qu'à poser sa question!</li>
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Commenter la réponse de WhiteHippo
Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 24 sept. 2008 à 21:01
0
Merci
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
Commenter la réponse de kopierreko
Messages postés
14
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
29 mars 2009
- 1 déc. 2008 à 21:35
0
Merci
Bonjour,
kopierreko, tu peux me dire ou tu as trouve ce code ? chez moi ca ne fonctionne pas, delphi me dit qu'il a pas pu charger mysql, DBXpress et SqlExpr (uses). Vous avez pas une idee de la raison pour laquelle il me dit ca?
Merci
Commenter la réponse de philc94
Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 1 déc. 2008 à 21:49
0
Merci
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
Commenter la réponse de kopierreko
Messages postés
14
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
29 mars 2009
- 1 déc. 2008 à 22:02
0
Merci
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
Commenter la réponse de philc94
Messages postés
140
Date d'inscription
mercredi 12 mars 2008
Dernière intervention
10 juillet 2010
- 2 déc. 2008 à 16:38
0
Merci
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.
Commenter la réponse de kopierreko
Messages postés
14
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
29 mars 2009
- 2 déc. 2008 à 19:43
0
Merci
Merci beaucoup, je vais regarder ca et je te dirai si je trouve la reponse a tes questions.
Commenter la réponse de philc94
Messages postés
14
Date d'inscription
vendredi 28 novembre 2008
Dernière intervention
29 mars 2009
- 2 déc. 2008 à 20:56
0
Merci
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
Commenter la réponse de philc94

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.