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

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

Commentez Donner une note à l'article (5)

Article lu   fois.

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 :

Image non disponible

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 connection à 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.

Image non disponible

Cela devrait donc ressembler a l'exemple ci dessus.

Maintenant, nous allons configurer TOracleConnection.

Image non disponible

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.

Image non disponible

Saisissez :

  • Database := OracleConnection1.

A présent, nous allons configurer TSQLQuery.

Image non disponible

Saisissez dans l'ordre suivant :

  • Database := OracleConnection1
  • SQL := Select * From TableTest
  • Transaction := SqlTransaction1
  • Active := True

Maintenant, nous allons configurer TDatasource.

Image non disponible

  • Dataset := SqlQuery1.

C'est au tour de TDBGrid.

  • DataSource:= DataSource1.

Image non disponible

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 appeller 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

Exemple

 
Sélectionnez

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 :

 
Sélectionnez

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 :

 
Sélectionnez

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

Remerciements

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

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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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.