Copie du wikimiroir

Ceci est un miroir du wiki de pascal.chat. La modification, l’historique et la connexion se trouvent là-bas.

SQLdb Tutorial1/fr

English · Español · Français · 中文(中国) · 日本語


Portail de la base de données
Références: · Information générale · Bibliothèques · Types de champ · Contrôles · FAQ · Comment faire en SQL ? · Travailler avec TSQLQuery · Applications de base de données en mémoire · Tutoriels/articles pratiques : · Vue d'ensemble · 0 - Configuration de la base de données · 1 - Commençons · 2 - Edition · 3 - Requêtes · 4 - Modules de données · Référence de programmation SQLdb · Bases de données · Advantage - MySQL - MSSQL - Postgres - Interbase - Firebird - Oracle - ODBC - Paradox - SQLite - dBASE - MS Access - Zeos

Déterminer la partie des informations à afficher

Bien que la connexion ait été réalisée, les données ne se sont pas affichée. La raison en est simple. Vous n'avez pas précisé au serveur ce qu'il devait vous renvoyer : La base de données employee.fdb contient plusieurs tables et nous n'avons pas informé Firebird quelle table nous voulions regarder. Si vous ne connaissez pas la structure de la base, vous pouvez utiliser des outils comme FlameRobin pour afficher les contenus. Lazarus fournit également un outil - le DataDesktop. Vous le trouverez dans le sous-répertoire /tools/lazdatadesktop/ de Lazarus. Sauvegardez votre projet puis ouvrez le projet lazdatadesktop.lpi et compilez-le.

The DataDesktop in action

Retournons à notre exemple.

Nous voulons afficher toutes les données de la table 'CUSTOMER'. Les instructions SQL pour ce faire sont :

pascal
select * from CUSTOMER

Nous devons affecter cette commande à la propriété 'SQL' de SQLQuery1. Dans le code source de notre projet, ça devrait avoir cet air-là :

pascal
SQLQuery1.SQL.Text := 'select * from CUSTOMER';

Les instructions SQL doivent être entourées d'apostrophes (se sont des chaînes de caractères au format Pascal). Vous pouvez également lui assigner la valeur d'un autre composant (par ex. Edit1.Text). Ce n'est pas toujours une bonne idée; voir Secure programming (une documentation plus avancée) pour des informations sur l'injection de code SQL qui constitue un important risque de faille de sécurité.

Ajoutons sur le formulaire un TButton (un bouton) depuis l'onglet 'Standard'. Quand l'utilisateur clique sur le bouton, l'extraction de données devrait commencer. Il va nous falloir écrire un peu de code pour faire ça. Double-cliquer sur Button1 (le bouton qu'on vient de placer sur le formulaire). Lazarus crée alors la procédure nécessaire. Nous trouverons dans notre code les lignes suivantes :

pascal
procedure TForm1.Button1Click(Sender: TObject);
    begin
    
    end;

Entre begin et end , vous devez taper les instructions nécessaire à l'affichage des données... ce qui a évidemment quelque chose à voir avec SQLQuery1.

La propriété 'SQL' de SQLQUery1 peut seulement être modifiée quand SQL est inactive. C'est pourquoi nous fermons d'abord le composant :

pascal
SQLQuery1.Close;

Puis nous assignons notre instruction SQL à la propriété 'SQL', écrasant du même coup un éventuel contenu préalable :

pascal
SQLQuery1.SQL.Text := 'select * from CUSTOMER';

Il nous faut maintenant établir la connexion à la base, activer la transaction et ouvrir la requête :

pascal
DBConnection.Connected := True;
    SQLTransaction1.Active := True;
    SQLQuery1.Open;

Vous pouvez omettre les deux premières instruction, car elles seront automatiquement invoquées par la troisième. Si vous compiler le projet à ce point, vous pourrez déjà voir les données de la table 'CUSTOMER'.

Toutefois, une application qui se veut sérieuse doit s'assurer que les connexions à la base de données sont proprement fermée quand elle ne sont plus utiles. Sinon des effets secondaires imprévisibles peuvent survenir. Donc, nous utilisons l'événement 'OnClose' du formulaire (créez-le en double-cliquant dans l'inspecteur d'objets :

pascal
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
    begin
    
    end;

Pour fermer la connexion, nous utiliserons l'ordre inverse de l'ouverture :

pascal
SQLQuery1.Close;
    SQLTransaction1.Active := False;
    DBConnection.Connected := False;

Résumé

Jusqu'à maintenant, nous avons appris a connecté la base de données en utilisant le paquet SQLdb pour afficher le contenu d'une table sur l'écran. Si vous voulez ajouter plus de fonctionnalités, comme l'édition des données, vous pouvez continuer avec Tutoriel SQLdb 2

Si vous avez suivi ces différentes étapes, votre code devrait ressemble à ceci :

pascal
unit Unit1; 
    
    {$mode objfpc}{$H+}
    
    interface
    
    uses
      Classes, SysUtils, IBConnection, sqldb, db, FileUtil, Forms, Controls,
      Graphics, Dialogs, DBGrids, StdCtrls;
    
    type
    
      { TForm1 }
    
      TForm1 = class(TForm)
        Button1: TButton;
        Datasource1: TDatasource;
        DBGrid1: TDBGrid;
        DBConnection: TIBConnection;
        SQLQuery1: TSQLQuery;
        SQLTransaction1: TSQLTransaction;
        procedure Button1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
      private
        { private declarations }
      public
        { public declarations }
      end; 
    
    var
      Form1: TForm1; 
    
    implementation
    
    {$R *.lfm}
    
    { TForm1 }
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SQLQuery1.Close;
      SQLQuery1.SQL.Text:= 'select * from CUSTOMER';
      DBConnection.Connected:= True;
      SQLTransaction1.Active:= True;
      SQLQuery1.Open;
    end;
    
    procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
    begin
      SQLQuery1.Close;
      SQLTransaction1.Active:= False;
      DBConnection.Connected:= False;
    end;
    
    end.

Voir aussi


From the Free Pascal wiki, page "SQLdb Tutorial1/fr", as the Internet Archive kept it on 2025-03-15, last changed on 2020-02-27. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Version 2, dernière modification par WikiArchive .