Bases de données : utilisation des accès natifs de Lazarus installés par défaut

chris37

Cet article explique comment se connecter à des bases de données en utilisant les composants natifs installés par défaut avec Lazarus.

Commentez ?

- Titre : Bases de données : utilisation des accès natifs de Lazarus installés par défaut

- 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

- Introduction

- Utilisation d'Oracle via la SQLdb

- Notes

- Voir aussi

- Exemple

- Remerciements

Introduction

Nous allons voir comment se connecter à des bases de données en utilisant les composants installés par défaut avec Lazarus.

Dans la palette de composant se trouve l'onglet SqlDb :

De gauche à droite, vous trouvez :

- TSQLQuery : Composant contenant les requêtes SQL à exécuter

- TSQLTransaction : Composant offrant la possibilité de déclarer une transaction (pas encore opérationnel à 100%)

- TSQLScript : Composant permettant d'exécuter directement des scripts SQL

- TSQLConnector : Composant permettant de rendre une application indépendante de la base de données

- TPQConnection : Composant de connexion à PostGreSql

- TOracleConnection : Composant de connexion à Oracle

- TODBCConnection : Composant de connexion via un driver ODBC

- TSQLite3Connection : Composant de connexion à Sqlite 3

- TMySQL50Connection : Composant de connexion à Mysql 5

- TIBConnection : Composant de connexion à Interbase

Nous allons utiliser une connexion à Oracle pour notre exemple, mais le principe est exactement le même pour les autres accès.

J'expliquerai au fur et à mesure les différences entre les modes d'accès.

Utilisation d'Oracle via la SQLdb

Dans Lazarus :
- ouvrez un nouveau projet Application ;
- sur la Form, déposez un objet TOracleConnection, TSQLTransaction, TSQLQuery, TDatasource et enfin TDBGrid.

Cela devrait donc ressembler a l'exemple ci-dessus.

Maintenant, nous allons configurer TOracleConnection.

Saisissez dans l'ordre suivant :

- DatabaseName = Nom de la base de données à laquelle on souhaite accéder. XE dans notre cas (voir le tutoriel Oracle). Dans notre cas il s'agit du TnsName.ora

- HostName = Adresse du serveur (Adresse IP ou nom logique) (127.0.0.1 ou localhost par exemple)

- UserName = Nom du compte utilisateur

- Password = Mot de passe défini pour ce compte utilisateur

Maintenant, nous allons configurer TSQLTransaction.

Saisissez :

- Database := OracleConnection1.

À présent, nous allons configurer TSQLQuery.

Saisissez dans l'ordre suivant :

- Database := OracleConnection1

- SQL := Select * From TableTest

- Transaction := SqlTransaction1

- Active := True

Maintenant, nous allons configurer TDatasource.

- Dataset := SqlQuery1.

C'est au tour de TDBGrid.

- DataSource:= DataSource1.

Mettez la propriété du TsqlQuery.active à true et votre DbGrid devrait se remplir comme ci-dessus.

Lancez votre code et on voit bien les enregistrements que nous avons saisis dans notre table lors de sa création.

Notes

Pour saisir directement dans la grille et enregistrer les données, il faut appeler la fonction applyUpdate du composant TSQLQuery. L'idéal étant de le faire automatiquement dans l'événement After Post du TSQLQuery.

Pour les requêtes de type Select, Show, Pragma, etc., il faut utiliser la procédure OPEN du TsqlQuery.

Pour les requêtes de type Create, Alter, Delete, Update, Insert, Exec, etc., il faut utiliser la procédure EXEC du TsqlQuery.

Il est préférable de créer un compte utilisateur propre à l'application qui doit se connecter. En effet, certains SGBD ne tolèrent pas un accès distant en mode administrateur (root dans le cas de MySql).

Pensez à configurer le serveur pour qu'il accepte les connexions distantes.

Vérifier les autorisations du firewall.

Voir aussi

- Complément MySql

- Complément Sqlite

- Complément PostGreSql

- Complément Oracle

Exemple

with SQLQuery1 do
begin
//Sélection de données
SQL.Clear;
SQL.Add('select * from matable');
Open;

//Insertion, Modification, Suppression de données
SQL.Clear;
SQL.Add('insert into matable.......');
OU
SQL.Add('update matable set .......');
OU
SQL.Add('delete from matable where.......');

ExecSQL;
ApplyUpdates;
end;

Requêtes paramétrées

Exemple : dans une table on a un champ 'NOM' de type Text et un champ de type datetime :

with SQLQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * from matable where nom = :nom and date_creation = :date_creation');
Params.ParamByName('nom').asString := 'mavaleur';
Params.ParamByName('date_creation').AsDate := now;
Open;
end;

Le texte précédé des ':' est un paramètre (:valeur et :date_creation).

Cela permet de ne pas avoir à réécrire la requête à chaque fois si on l'utilise plusieurs fois.
Exemple : pour une utilisation à un autre endroit, écrivez le code suivant pour rechercher une autre valeur avec la même date :

with SQLQuery1 do
begin
Close;
Params.ParamByName('nom').asString := 'autrevaleur';
Open;
end;

Remerciements

Merci à Minusk d’avoir préparé le terrain avec Oracle.

Merci à pomalo pour les compléments d'exemples.