Utilisation de Lazarus avec Mysql (Complément)

chris37

En complément aux articles généraux relatifs à l'utilisation des bases de données avec Lazarus, ce document expose des détails complémentaires spécifiques à MySql.

Commentez ♪

- Titre : Utilisation de Lazarus avec Mysql (Complément)

- Auteur : chris37

- Parution : 4 novembre 2008

- Mise à jour : 21 janvier 2011

- Licence : Copyright ® 2008-2011 chris37. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Problème d'accès à la librairie Libmysql.dll sous Windows

- Problème d'affichage des accents avec Mysql

- Paramétrage de Mysql pour un accès distant

- Quelques commandes SQL bien pratiques

Problème d'accès à la librairie Libmysql.dll sous Windows

Pour l'exécution de votre programme, il faut placer cette dll dans le répertoire du projet.

Pour se connecter depuis l'IDE de Lazarus et piloter les composants tels que TSqlQuery et ajouter des rubriques, il faut placer également une copie de la dll dans le répertoire de Lazarus et, dans certains cas, cette dll doit aussi être placée dans C:\Windows\System et/ou dans C:\Windows\System32.

Attention, la version de la dll est prise en compte par Lazarus. Vous pouvez télécharger une version compatible de libmySQL.dll avec Lazarus 0.9.29 et ici (lien miroir).

Problème d'affichage des accents avec Mysql

Par défaut, les composants d'accès natif de Lazarus ne proposent pas la gestion de l'UTF-8 et les données ne seront pas affichées correctement dans les champs (TDBEdit, TDBGrid, etc). Ce problème peut également survenir avec d'autres composants d'accès comme ceux de ZEOS. Appliquez dans ce cas la même méthode que pour les composants natifs.

Pour remédier à cela, placez un TSqlQuery (Name = SqlQuerySet) sur votre Form ou votre DataModule et utilisez-le de la manière suivante.

Dans le code de l'événement AFTERCONNECT du TSqlConnection, placez le code suivant :

SQLQuerySet.SQL.Text : = 'SET CHARACTER SET `utf8`';
SQLQuerySet.ExecSql;

Lors de la connexion, la séquence sera envoyée à la base de données et vos données seront bien affichées par la suite.

Paramétrage de Mysql pour un accès distant

Dans le fichier de configuration de MySql (my.cnf) ou (my.ini), assurez-vous que la ligne BIND-ADRESS soit mise en commentaire. Si elle ne l'est pas, seules les connexions depuis l'IP spécifiée seront autorisées.

bind-adress

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address = 127.0.0.1

Le port 3306 est utilisé par défaut par Mysql. Vérifiez un blocage par le firewall en cas de soucis.

L'utilisateur devant accéder à la base depuis un poste distant doit avoir les privilèges pour effectuer cette opération.

Quelques commandes SQL bien pratiques

Liste des bases du serveur

SHOW DATABASES

Liste des tables et index

SHOW TABLES

Structure d'une table

SHOW COLUMNS FROM 'MATABLE'

Dernier autoinc ajouté

SELECT DISTINCT LAST_INSERT_ID() FROM 'MATABLE'

Initialiser la valeur de l'auto-incrément (pour la réplication)

ALTER TABLE 'MATABLE' AUTO_INCREMENT=200000000

Liste des index d'une table

SHOW INDEX FROM 'MATABLE'

Affiche les droits de l'utilisateur en cours

SHOW GRANTS;

Affiche les droits d'un utilisateur sur un poste donné

SHOW GRANTS FOR 'utilisateur'@'host';

Affiche les droits d'un utilisateur sur tous les postes

SHOW GRANTS FOR 'utilisateur'@'%';