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 :

Connectivité aux bases de données Delphi 11.3


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 130
    Points : 59
    Points
    59
    Par défaut Connectivité aux bases de données Delphi 11.3
    Bonjour,

    Je me lance dans les bases de données FireDac.

    Pour ce faire, j'ai installé MariaDB.

    Mon projet comprend une fiche + un data module avec divers composants, notamment FDConnection.

    Pour tester et mettre la propriété connected à true de FDConnection, mon tutoriel (livre delphi 10.3) me dit que dans le cas
    de MySql/MariaDB, il faut ajouter dans le path du système d'exploitation (Windows10) le chemin vers la DLL libmysql.dll

    Voici le path de windows10 : %USERPROFILE%\AppData\Local\Microsoft\WindowsApps

    Et le chemin de libmysql.dll : C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll

    Donc si je suis mon tutoriel le path deviendrait : %USERPROFILE%\AppData\Local\Microsoft\WindowsApps\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll

    Je ne suis pas convaincu et je crains de détraquer windows.

    Il y aurait -il un autre moyen ? A moins que ce soit la solution ?

    Merci d'avance pour vos réponses

    Cordialement

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Citation Envoyé par magdani Voir le message
    Donc si je suis mon tutoriel le path deviendrait : %USERPROFILE%\AppData\Local\Microsoft\WindowsApps\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll
    Pas vraiment.
    Là tu as pris deux chemins distincts et tu les a concaténés.
    Ce qui donne un chemin qui n'existe pas.

    Je n'ai pas lu ton tutoriel mais je pense que tu as mal compris.
    A mon avis, cela te dit que si tu utilises MySQL/MariaDB sur un système OS Windows 10, tu dois ajouter le chemin vers la DLL dans les chemins d'environnement.

    Pour faire, cela :
    1. Cliquer sur l'icone de Windows 10 (anciennement le menu "Démarrer")
    2. Taper "env"
    3. Taper Cliquer sur "Modifier les variables d'environnement système"
    4. Dans la fenêtre qui s'affiche, aller dans l'onglet "Paramètres système avancés"
    5. Cliquer sur le bouton "Variables d'environnement"
    6. Dans la nouvelle fenêtre, cliquer sur "Nouvelle..." sous les variables système.
    7. Saisir le nom de la variable telle que définie dans ton tutoriel et la valeur de la variable avec le chemin de la DLL, puis valider

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par magdani Voir le message
    Voici le path de windows10 : %USERPROFILE%\AppData\Local\Microsoft\WindowsApps

    Et le chemin de libmysql.dll : C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll

    Donc si je suis mon tutoriel le path deviendrait : %USERPROFILE%\AppData\Local\Microsoft\WindowsApps\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll
    Il doit y avoir une erreur, le PATH deviendrait %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;C\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll !

    J'ai des PATH avec 20 chemins et plus de 800 caractères, cela n'a rien d'extraordinaire
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 130
    Points : 59
    Points
    59
    Par défaut
    Merci pour les réponses.

    Mon tutoriel ne donne pas de nom de variable d'environnement, juste qu'il faut ajouter le chemin de libmysql.dll dans le path.

    J'ai toutefois créé une nouvelle variable d'environnement avec un nom (de ma composition) et le chemin de la dll, ça ne marche pas.

    J'ai ajouté l'adresse de la dll dans le path. Ce qui donne le chemin suivant :

    %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll

    Ça ne marche pas non plus.

    A chaque fois que je mets la propriété connected à true de FDConnection, le message d'erreur suivant surgit :

    "[FireDac][phys][MySql]-314. Impossible de charger la bibliothèque du fournisseur [libmysql.dll, libmariadb ou libmysqld.dll]. Le module spécifié est introuvable.
    Conseil, vérifiez qu'il est dans le PATH ou dans les répertoire EXE de l'application et qu'il a un nombre bits de x86"

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par magdani Voir le message
    qu'il a un nombre bits de x86
    Tout est là.
    L'EDI étant en 32 bits, il est nécessaire d'avoir une dll 32 bits au design.
    En première lecture, je me demandais ce que les variables d'environnements avait à voir te pensait avant tout : "pourquoi il n'est pas question d'un FDPhysMysqldriver ?"
    Je me pose la question : est bien une version 32 bits de mariadb qui a été installée ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    C'est qu'il faut ajouter le chemin dans la variable PATH existante.

    Refais les étapes 1 à 5 et ajoute le chemin dans la variable nommée PATH.

    La remarque de Sergio est également pertinente

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pense à couper Delphi, il ne doit charger les variables d'env qu'à son démarrage
    "C\Program Files (x86)" est bien 32 bits en terme d'emplacement, faut surtout pas se tromper et installer au mauvais endroit.

    Vérifie aussi surout ton fichier FDDrivers.ini :

    Code ini : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [MySQL]
    VendorLib=C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll

    As-tu songé de ne mettre à True qu'en RunTime
    Je n'ai jamais utilisé en plus de 20 ans de Delphi la connexion depuis le RAD en DesignTime, cela ne sert à rien qu'à écrire du code de merde !

    As-tu tenté de charger manuellement libmysql.dll ?
    HeidiSQL c'est pas écrit en Delphi justement : https://github.com/HeidiSQL/HeidiSQL...mysql.pas#L266

    Commence par un mysql_init et mysql_real_connect ... un vieux code D7 et MySQL 4 :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    procedure TepcMySQLConnexionPassThrough.Connect();
    begin
      if not FConnected then
      begin
         try
            FConnexion := mysql_init(nil);
         except
            {$IFDEF DATA_MySQL_PassThrough}
            raise EMyError.Create(0, 'Librarie MySQL non Installée !');
            {$ELSE}
            Exit;
            {$ENDIF}
         end;
     
         if not Assigned(FConnexion) then
         begin
            raise EMyError.CreateFmt('Connexion non Initialisée : %d - %s ', [mysql_errno(FConnexion), mysql_error(FConnexion)]);
         end;
     
         if mysql_options(FConnexion, MYSQL_OPT_CONNECT_TIMEOUT, PChar(FTimeOut)) <> 0 then
         begin
            raise EMyError.CreateFmt('TimeOut non Initialisé  : %d - %s ', [mysql_errno(FConnexion), mysql_error(FConnexion)]);
         end;
     
         if not Assigned(mysql_real_connect(FConnexion, PChar(FServerName), PChar(FLogin), PChar(FPW), PChar(FDataBaseName), 0, nil, 0)) then
         begin
            raise EMyError.CreateFmt('Echec de la Connexion : %d - %s ', [mysql_errno(FConnexion), mysql_error(FConnexion)]);
         end;
      end;
     
      FConnected
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 130
    Points : 59
    Points
    59
    Par défaut
    Bonjour et merci,

    Toutes les versions MariaDB ont une architecture x86_64

    Chemin de base de ma variable PATH : %USERPROFILE%\AppData\Local\Microsoft\WindowsApps

    Auquel j'ai ajouté : C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll

    Variable Path modifiée : %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll

    Est-ce juste ?

    Je ne comprend pas ce que veut dire ShaileTroll :

    [MySQL]
    VendorLib=C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Citation Envoyé par magdani Voir le message
    Toutes les versions MariaDB ont une architecture x86_64
    Les bibliothèques sont soit l'un soit l'autre, pas les deux à la fois et connaitre l'architecture du serveur n'est pas pertinent pour le développement d'un client.

    Citation Envoyé par magdani Voir le message
    C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\libmysql.dll
    J'utilise aussi HeidiSQL et je ne trouve pas ce dossier. De plus HeidiSQL est 64 bits sur un système 64.


    Mais de toute façon il n'y a pas lieu de modifier PATH. Soit on procède à l'aide d'un fichier de configuration comme proposé par ShaiLeTroll, soit directement dans le projet à l'aide du composant TFDPhysMySQLDriverLink. Dans les deux cas on peut spécifier le chemin complet vers la bibliothèque.

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 130
    Points : 59
    Points
    59
    Par défaut
    Merci pour la réponse.

    MariaDB installé sur mon PC est bien a 32 bit : HeidiSQL 12.6.0.6765 32 Bit

    J'avais essayé avec ShellExecute depuis mon projet.

    Je vais essayer avec TFDPhysMySQLDriverLink.

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

Discussions similaires

  1. Problème base de donné Delphi 2010
    Par bladi2009 dans le forum Bases de données
    Réponses: 3
    Dernier message: 02/01/2013, 18h29
  2. Réponses: 5
    Dernier message: 05/03/2009, 12h18
  3. base de donnés sous delphi
    Par mahboubi dans le forum Bases de données
    Réponses: 1
    Dernier message: 03/01/2009, 13h29
  4. Créer un editeur de base de donné sous delphi
    Par lassad dans le forum Bases de données
    Réponses: 6
    Dernier message: 19/10/2005, 01h24
  5. Accès aux base de données sous Delphi 7 Edition Studio Perso
    Par renorx dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/02/2005, 14h24

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