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 :

connexion Interbase avec Delphi perso


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

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

    Informations forums :
    Inscription : mai 2003
    Messages : 116
    Points : 143
    Points
    143
    Par défaut connexion Interbase avec Delphi perso
    J'ai suivi à la lettre le tutoriel "Attaquer une base Firebird avec Delphi version personnelle".

    J'ai adapté ce principe pour une base de donnée Interbase version 6.

    La connection se passe bien, mais quand je teste sur un utilisateur qui n'existe pas, il accepte la connection, malgré tout. Pouvez vous m'indiquer ou ça pèche?

    Voici le code python :
    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
    21
    class TFBConnection:
        def __init__(self, host='ERIC', database='C:\WINDOWS\SYSTEM32\BASE 3D', \
                     user='ERIC', password='AUDR95'):
            self.database=database
            self.host=host
            self.user=user
            self.password=password
        ## Created: ??? - Updated: 2005.07.28         
        def Connect(self): self.con = kinterbasdb.connect(host=self.host, database=self.database, user=self.user, password=self.password)
        ## Created: ??? - Updated: 2005.07.28 
        def Commit(self): self.con.commit()
        ## Created: ??? - Updated: 2005.07.28        
        def Cursor(self): return TFBCursor(self)
        ## Created: ??? - Updated: 2005.07.28 
        def Rollback(self): self.con.rollback()
        ## Created: ??? - Updated: 2005.07.28 
        def Close(self): self.con.close()
        ## Created: ??? - Updated: 2005.07.28 
        def DropDatabase(self): self.con.drop_database()        
        ## Created: ??? - Updated: 2005.07.28
        def CreateDatabase(self): self.con = kinterbasdb.create_database( "create database '"+self.database+"' user '"+self.user+"' password '"+self.password+"'")
    Et le code Delphi :
    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
     Begin
          PyString:=TStringList.Create;
          PyString.LoadFromFile('c:\Dossiers Eric\Développement\Base 3D Delphi\FBBase.Py');
          PELogin.ExecStrings(PyString);
          PyBase:=MainModule.TFBConnection();
          PyBase.User:=ELogin.Text;
          PyBase.Password:=EMotPasse.Text;
          PyString.Free;
          Try
            PyBase.Connect();
            FLogin.DestroyWindowHandle;
          Except
            MessageDlg('Login ou mot de passe incorrect!',mterror,[mbOk],0);
            ELogin.Text:='';
            EMotPasse.Text:='';
            ELogin.SetFocus;
          End;
        End;
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2002
    Messages : 1 864
    Points : 8 794
    Points
    8 794
    Par défaut
    Tout d'abord un petit conseil, double les '\' dans les chaines de caractères sinon le \ (en fonction de se qui est derrière) est considéré comme un caractère spécial avec interprétation (là, y'a pas de souci mais mieux vaut être prudent):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     def __init__(self, host='ERIC', database='C:\\WINDOWS\\SYSTEM32\\BASE 3D', \ 
                     user='ERIC', password='AUDR95'):
    Dans le code que tu as écrit, tout me paraît correct.
    Est-ce que le problème pourrait venir de ta base de données qui pourrait accepter n'importe quel user ?
    Plusieurs essais à faire:
    * utilise un user correct et un password incorrect et regarde ce qu'il te dit
    * ne mets pas de valeur par défaut dans user et password:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     def __init__(self, host='ERIC', database='C:\\WINDOWS\\SYSTEM32\\BASE 3D', \ 
                     user, password):
    et fait divers test avec différents users/password


    PS: pour l'installation de Python, tu as installé le langage et les diverses librairie ou tu as récupéré le le runtime que j'avais fait ?

  3. #3
    Expert éminent
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2002
    Messages : 1 864
    Points : 8 794
    Points
    8 794
    Par défaut Re: connexion Interbase avec Delphi perso
    Citation Envoyé par ptitdragon_eric

    La connection se passe bien, mais quand je teste sur un utilisateur qui n'existe pas, il accepte la connection, malgré tout. Pouvez vous m'indiquer ou ça pèche?
    Un truc qui me vient à l'esprit. Quand tu dis, il accepte la connexion malgré tout, est-ce qu'il t'indique avant que le login ou mot de passe est incorrect ?

    Si oui, je suppose que juste avant tu as fait une connection avec le login/mot de passe correct. Puis que tu as fait le test à la suite avec un login incorrect. Mais comme tu n'avais pas déconnecté la connection, le programme est resté en connection avec l'ancien login/mot de passe.

    Dans ce cas-là, il faut penser à se déconnecter avant une reconnection éventuelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        try
            PyBase.Close();
        except
        end;

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

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

    Informations forums :
    Inscription : mai 2003
    Messages : 116
    Points : 143
    Points
    143
    Par défaut
    Citation Envoyé par Guigui_
    Tout d'abord un petit conseil, double les '\' dans les chaines de caractères sinon le \ (en fonction de se qui est derrière) est considéré comme un caractère spécial avec interprétation (là, y'a pas de souci mais mieux vaut être prudent)
    C'est Fait.

    Citation Envoyé par Guigui_
    Est-ce que le problème pourrait venir de ta base de données qui pourrait accepter n'importe quel user ?
    La réponse est non, car quand je me connecte sur IBConsole, il n'accepte pas les mauvais logins et mots de passe.

    Citation Envoyé par Guigui_
    Plusieurs essais à faire:
    * utilise un user correct et un password incorrect et regarde ce qu'il te dit
    * ne mets pas de valeur par défaut dans user et password:
    J'ai fait le test et j'ai le message d'erreur suivant :
    syntax error:non-default argument follows default arguments
    Citation Envoyé par Guigui_
    PS: pour l'installation de Python, tu as installé le langage et les diverses librairie ou tu as récupéré le le runtime que j'avais fait ?
    J'ai installé tout le programme avec toutes les librairies.

    Peux tu me dire dans quelle variables de FBBase les logins et mots de passe de Delphi sont sensées se trouver?

  5. #5
    Expert éminent
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2002
    Messages : 1 864
    Points : 8 794
    Points
    8 794
    Par défaut
    Je crois que je viens de comprendre:

    Tu as oublié que Python est sensible à la casse (majuscule!=minuscule) (Je me souviens avoir insisté la-dessus dans mon tuto (peut-être pas assez) )


    en écrivant cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          PyBase.User:=ELogin.Text; 
          PyBase.Password:=EMotPasse.Text;
    tu as en fait créé 2 nouvelles variables User et Password (PyBase a alors 6 attributs: host, database, user, User, password, Password)
    Et en fait, les valeurs par défaut créées lors de l'initialisation de PyBase n'ont donc pas été modifiées par ton programme.

    Il faut donc écrire cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          PyBase.user:=ELogin.Text; 
          PyBase.password:=EMotPasse.Text;

    Citation Envoyé par ptitdragon_eric
    J'ai fait le test et j'ai le message d'erreur suivant :Citation:
    syntax error:non-default argument follows default arguments
    Là, je pense que le programme n'a même pas du se lancer, non ?
    Dans les fonctions (cela doit être la même chose en Delphi), si tu as des arguments avec valeur par défaut, ceux qui suivent doit aussi en avoir (donc là, c'était une mauvaise suggestion de ma part)


    Citation Envoyé par ptitdragon_eric
    Peux tu me dire dans quelle variables de FBBase les logins et mots de passe de Delphi sont sensées se trouver?
    Dans le code Python, tu visualises les attributs de classe lorsque ceux si sont précédés de self.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

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

    Informations forums :
    Inscription : mai 2003
    Messages : 116
    Points : 143
    Points
    143
    Par défaut
    ça y est ça marche effectivement, il s'agissait de User et de Password.

    J'ai corrigé et ça marche.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 12/12/2011, 17h07
  2. connexion à BD interbase avec Delphi
    Par Abou Zar dans le forum Bases de données
    Réponses: 6
    Dernier message: 14/06/2010, 19h25
  3. ADO, DAO avec Delphi Perso
    Par alaingui dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/01/2008, 08h03
  4. Connexion interbase avec vb.net
    Par ffrancky dans le forum InterBase
    Réponses: 1
    Dernier message: 04/10/2005, 17h56
  5. Connection ou création d'une base interbase avec Delphi
    Par vincentj dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/01/2005, 10h59

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