Sign in Join
Wiki copytemporary

SQLdb Tutorial0/fr: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Introduction
22
33Cet article vous aidera à configurer votre environnement de base de données avec des exemples de tables et de données utilisés dans les tutoriels SQLdb 1, 2, 3 et 4.
44
55Bien que cette page soit assez longue, vous n'en parcourrez que quelques sections, puisque cet article contient des instructions pour divers systèmes de bases de données.
66
77Si vous voulez être rapidement opérationnel(le), je suggère que vous installiez le serveur Firebird et la base de données d'exemple comme décrit ci-dessous.
88
99## Pré-requis
1010
1111Ce tutoriel a été écrit pour être utilisé avec des versions récentes de Lazarus (\>= 1.0) ; il devrait aussi convenir pour de plus anciennes versions (0.9.30).
1212
1313En outre, vous avez besoin d'une base de données SQL relationnelle comme [Firebird](http://sourceforge.net/project/showfiles.php?group_id=9028) (si possible version 2.0 ou plus). C'est plus facile si vous utilisez des paramètres standard (par exemple, SYSDBA comme nom d'utilisateur et masterkey comme mot de passe), et si vous avez installé la base de données d'exemple "employee".
1414
1515Vous pouvez utiliser une autre base de données (par exemple, Microsoft SQL Server, MySQL, PostgreSQL, Oracle, SQLite, Sybase ASE ou une autre base utilisant ODBC). Veuillez vous assurer de disposer des bibliothèques requises de client base de données (voyez les différents articles du wiki sur les bases de données). Voyez ci-dessous la section **Firebird ou employee.fdb non installé ?** pour la manière de configurer vos tables.
1616
1717## Installation de Firebird
1818
1919Au cas où vous n'auriez pas encore installé Firebird ou la base de données d'exemple utilisée dans ces tutoriels, vous trouverez des instructions ci-dessous.
2020
2121### Installation du client/serveur Firebird
2222
2323Si vous n'avez encore rien installé, vous pouvez télécharger et exécuter l'installeur sur www.firebirdsql.org, et installer le serveur (par exemple, "32-bit Classic, Superclassic & Superserver").
2424
2525### Bibliothèques de bases de données Firebird sur Windows
2626
2727Après installation sur Windows, les DLLs du client Firebird doivent être présentes ;
2828
2929- soit dans votre répertoire système (disponibles pour tous les programmes) ;
3030- soit dans votre répertoire Lazarus (pour la conception dans l'IDE) et dans le répertoire de destination où se trouve l'exécutable (pour exécuter le programme compilé).
3131
3232Si vous n'avez pas installé le serveur Firebird, une manière simple d'obtenir les DLLs du client est de télécharger Firebird Embedded 2.5 sur [1](http://www.firebirdsql.org/en/firebird-2-5/). Extrayez ces fichiers dans le répertoire de votre application :
3333
3434``` bash
3535fbclient.dll # uniquement si vous utilisez le serveur
3636# ou
3737fbembed.dll # uniquement si vous utilisez Firebird Embedded
3838firebird.msg
3939ib_util.dll
4040icudt30.dll
4141icuin30.dll
4242icuuc30.dll
4343Microsoft.VC80.CRT.manifest
4444msvcp80.dll
4545msvcr80.dll
4646```
4747
4848Renommez fbembed.dll en fbclient.dll (le nom d'un client Firebird normal, client-serveur - c'est utile sur de plus anciennes versions de Lazarus). La DLL de Firebird Embedded peut également fonctionner comme un client Firebird normal.
4949
5050Assurez-vous que la base de données employee.fdb se trouve dans le répertoire de votre projet. Vous pouvez la copier depuis le répertoire examples/empbuild/ du serveur Firebird 2.5.
5151
5252Pour finir, compilez votre projet une fois (même s'il est vide), pour créer le répertoire de destination, et copiez les DLLs ainsi que la base de données employee.fdb dans ce répertoire.
5353
5454### Bibliothèques de bases de données Firebird sur d'autres systèmes
5555
5656Sur Linux/OSX, vous aurez aussi besoin des bibliothèques partagées du client Firebird. Sur Linux, vous pouvez utiliser le gestionnaire de paquets de votre distribution pour récupérer les paquets du client Firebird ; par exemple, sur Debian :
5757
5858``` bash
5959aptitude install libfbclient2 firebird-dev # nous avons besoin de la version dev car FPC 2.6 et précédents chercheront libfbclient.so
6060```
6161
6262## Firebird ou employee.fdb non installé ?
6363
6464Si la base de données d'exemple employee n'est pas installée, ou si vous utilisez une base de données différente, voici une version minimale de la table que nous utiliserons (note : vous trouverez ci-dessous des directives pour des bases de données spécifiques).
6565
6666### Création automatique
6767
6868La méthode de configuration la plus simple est de créer une base de données vide sur votre système et de vous y connecter avec le programme utilitaire d'exemple TSQLScriptSample. Ce programme est inclus dans les versions de développement courantes de Lazarus, dans le répertoire `./examples/database/tsqlscript`, mais il peut également être téléchargé sur : <http://svn.freepascal.org/svn/lazarus/trunk/examples/database/tsqlscript/>
6969
7070Compilez et exécutez le programme, puis connectez-vous à la base de données :
7171
72-<figure>
73-<img src="tsqlscriptsample_connect.png" title="tsqlscriptsample_connect.png" />
74-<figcaption>tsqlscriptsample_connect.png</figcaption>
75-</figure>
72+![](/wiki-images/6/6e/Tsqlscriptsample_connect.png)
7673
7774Cliquez ensuite sur le bouton *Copy table creation script*, et *Run script* :
7875
79-<figure>
80-<img src="tsqlscriptsample_runfirstscript.png" title="tsqlscriptsample_runfirstscript.png" />
81-<figcaption>tsqlscriptsample_runfirstscript.png</figcaption>
82-</figure>
76+![](/wiki-images/a/ab/Tsqlscriptsample_runfirstscript.png)
8377
8478Le programme doit normalement indiquer que l'opération est couronnée de succès. Faites à présent la même chose pour *Copy sample data script*, et *Run script*.
8579
8680En cas de problème, vous pouvez essayer les étapes manuelles ci-dessous.
8781
8882### Création manuelle
8983
9084Nous allons créer les tables CUSTOMER et EMPLOYEE qui seront utilisées dans un prochain tutoriel.
9185
9286Exécutez ces commandes SQL dans votre éditeur/utilitaire de base de données :
9387
9488``` sql
9589CREATE TABLE CUSTOMER
9690(
9791 CUST_NO INTEGER NOT NULL,
9892 CUSTOMER VARCHAR(25) NOT NULL,
9993 CITY VARCHAR(25),
10094 COUNTRY VARCHAR(15),
10195 CONSTRAINT CT_CUSTOMER_PK PRIMARY KEY (CUST_NO)
10296);
10397```
10498
10599``` sql
106100CREATE TABLE EMPLOYEE
107101(
108102 EMP_NO INTEGER NOT NULL,
109103 FIRST_NAME VARCHAR(15) NOT NULL,
110104 LAST_NAME VARCHAR(20) NOT NULL,
111105 PHONE_EXT VARCHAR(4),
112106 JOB_CODE VARCHAR(5) NOT NULL,
113107 JOB_GRADE INTEGER NOT NULL,
114108 JOB_COUNTRY VARCHAR(15) NOT NULL,
115109 SALARY NUMERIC(10,2) NOT NULL,
116110 CONSTRAINT CT_EMPLOYEE_PK PRIMARY KEY (EMP_NO)
117111);
118112```
119113
120114Quelques données pour pouvoir au moins montrer quelque chose... D'abord quelques clients :
121115
122116``` sql
123117INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (1, 'Michael Design', 'San Diego', 'USA');
124118INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (2, 'VC Technologies', 'Dallas', 'USA');
125119INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (3, 'Klämpfl, Van Canneyt', 'Boston', 'USA');
126120INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (4, 'Felipe Bank', 'Manchester', 'England');
127121INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (5, 'Joost Systems, LTD.', 'Central Hong Kong', 'Hong Kong');
128122INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (6, 'Van der Voort Int.', 'Ottawa', 'Canada');
129123INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (7, 'Mrs. Mauvais', 'Pebble Beach', 'USA');
130124INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (8, 'Asinine Vacation Rentals', 'Lihue', 'USA');
131125INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (9, 'Fax', 'Turtle Island', 'Fiji');
132126INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (10, 'FPC Corporation', 'Tokyo', 'Japan');
133127INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (11, 'Dynamic Intelligence Corp', 'Zurich', 'Switzerland');
134128INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (12, '3D-Pad Corp.', 'Paris', 'France');
135129INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (13, 'Swen Export, Ltd.', 'Milan', 'Italy');
136130INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (14, 'Graeme Consulting', 'Brussels', 'Belgium');
137131INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (15, 'Klenin Inc.', 'Den Haag', 'Netherlands');
138132```
139133
140134Puis quelques employés :
141135
142136``` sql
143137INSERT INTO employee(emp_no, first_name, last_name, phone_ext, job_code, job_grade,
144138 job_country, salary)
145139 VALUES (1,'William','Shatner','1702','CEO',1,'USA',48000);
146140INSERT INTO employee(emp_no, first_name, last_name, phone_ext, job_code, job_grade,
147141 job_country, salary)
148142 VALUES (2,'Ivan','Rzeszow','9802','Eng',2,'Russia',38000);
149143INSERT INTO employee(emp_no, first_name, last_name, phone_ext, job_code, job_grade,
150144 job_country, salary)
151145 VALUES (3,'Erin','Powell','1703','Admin',2,'USA',45368);
152146```
153147
154148Créez la base de données, les tables et insérez les données dans votre environnement de bases de données.
155149
156150## SQLite
157151
158152Si vous utilisez SQLite, vous pouvez créer la base de données mentionnée plus haut dans le répertoire de votre projet, en lançant l'exécutable SQLite :
159153
160154``` bash
161155sqlite employee.sqlite
162156```
163157
164158Copiez et collez à présent les commandes CREATE TABLE et INSERT ci-avant. Pour tester si les bonnes données sont présentes, entrez cette requête :
165159
166160``` SQL
167161select * from customer;
168162```
169163
170164Terminez votre session avec
171165
172166``` SQL
173167.quit
174168```
175169
176170Un fichier appelé employee.sqlite devrait maintenant être créé dans le répertoire de votre projet.
177171
178172Assurez-vous que les DLL/so SQLite requises soient installées - par exemple, sur Windows, sqlite3.dll devrait être présent dans
179173
180174- votre répertoire Lazarus + projet de destination, ou
181175- votre répertoire système.
182176
183177En outre, si vous avez une DLL SQLite 32 bits, assurez-vous d'avoir la version 32 bits de Lazarus.
184178
185179Compilez votre projet une fois (même s'il est vide), pour créer le répertoire de destination, et (sour Windows) copiez-y la DLL ainsi que la base de données employee.sqlite.
186180
187181## PostgreSQL
188182
189183Dans cette section, nous partons du principe que vous utilisez un serveur Linux et la console ; les étapes équivalentes peuvent être réalisées sous Windows et avec des outils GUI comme PGAdmin.
190184
191185Connectez-vous à votre serveur et basculez vers le compte PostgreSQL :
192186
193187``` bash
194188su - postgres -c psql # démarrage immédiat de l'interpréteur SQL psql
195189```
196190
197191Créez un utilisateur pour la base de données et pour les tables :
198192
199193``` SQL
200194CREATE USER employee WITH PASSWORD 'hellopassword'; -- bien sûr, mettez un mot de passe à votre goût
201195-- Quelque chose comme 'CREATE ROLE' devrait s'afficher pour indiquer le succès de l'opération.
202196-- Pour changer ultérieurement le mot de passe, vous pouvez utiliser quelque chose comme
203197-- alter user employee with password '<newpasswordhere>';
204198
205199-- Nous allons empêcher le mot de passe d'expirer ; si vous souhaitez plus de sécurité, passez cette étape :
206200ALTER USER employee VALID UNTIL 'infinity'; -- le mot de passe n'expire jamais
207201
208202-- Nous allons encore un peu resserrer les choses :
209203-- ne pas permettre à un utilisateur de créer une base de données ou d'autres utilisateurs :
210204ALTER USER employee NOCREATEDB NOCREATEUSER; -- restreint la création d'objets
211205-- Quelque chose comme 'ALTER ROLE' devrait s'afficher pour indiquer le succès de l'opération.
212206
213207-- Créons notre base de données :
214208CREATE DATABASE employee;
215209-- Quelque chose comme 'CREATE DATABASE' devrait s'afficher pour indiquer le succès de l'opération.
216210
217211-- Attribuons tous les privilèges sur la base de données employee à l'utilisateur employee :
218212GRANT ALL PRIVILEGES ON DATABASE employee TO employee; -- attribue à l'utilisateur toutes les permissions sur la base de données
219213-- Quelque chose comme 'GRANT' devrait s'afficher pour indiquer le succès de l'opération.
220214
221215-- Créons la table customer, utilisant un type de donnée serial - aka autonumber/autoincrement :
222216CREATE TABLE customer
223217(
224218 cust_no serial NOT NULL,
225219 customer character varying(25) NOT NULL,
226220 city character varying(25),
227221 country character varying(15),
228222 CONSTRAINT integ_60 PRIMARY KEY (cust_no)
229223);
230224
231225-- Créons alors la table employee :
232226CREATE TABLE EMPLOYEE
233227(
234228 EMP_NO SERIAL NOT NULL,
235229 FIRST_NAME VARCHAR(15) NOT NULL,
236230 LAST_NAME VARCHAR(20) NOT NULL,
237231 PHONE_EXT VARCHAR(4),
238232 JOB_CODE VARCHAR(5) NOT NULL,
239233 JOB_GRADE INTEGER NOT NULL,
240234 JOB_COUNTRY VARCHAR(15) NOT NULL,
241235 SALARY NUMERIC(10,2) NOT NULL,
242236 CONSTRAINT CT_EMPLOYEE_PK PRIMARY KEY (EMP_NO)
243237);
244238
245239-- À présent, copiez et collez les commandes INSERT de la section ci-dessus pour insérer les données.
246240
247241-- Pour tester si les bonnes données sont présentes, entrez cette requête :
248242SELECT * FROM customer;
249243-- Vous devriez voir quelques clients.
250244
251245-- Sortie de psql :
252246\q
253247```
254248
255249À présent, vous devriez être dans la console, connecté comme utilisateur Postgres.
256250
257251Si votre serveur est une autre machine que celle de développement, assurez-vous d'autoriser l'accès réseau à la base de données. Consultez votre documentation PostgreSQL pour les détails, mais quelque chose comme ceci devrait fonctionner :
258252
259253``` bash
260254# Remplacez nano (p.ex. vim, emacs, joe...) et le numéro de version Postgres selon votre environnement
261255nano /etc/postgresql/8.4/main/pg_hba.conf
262256```
263257
264258Vérifiez la présence d'une ligne comme (remplacez 192.168.0.1 par votre propre adresse IP, ou range) :
265259
266260``` bash
267261# Permet l'accès depuis le réseau local, en utilisant des mots de passe crypyés en MD5 :
268262host all all 192.168.0.1/24 md5
269263```
270264
271265Ou, plus restrictif :
272266
273267``` bash
274268# Permet uniquement l'accès réseau à la base de données employee par l'utilisateur employee :
275269host employee employee 192.168.0.1/24 md5
276270```
277271
278272Si une telle ligne n'existe pas, ajoutez-la à la fin, enregistrez et fermez votre éditeur. Consultez la documentation PostgreSQL pour plus de détails.
279273
280274Rechargez les réglages PostgreSQL :
281275
282276``` bash
283277
284278psql
285279```
286280
287281puis
288282
289283``` SQL
290284
291285SELECT pg_reload_conf(); -- recharge les réglages...
292286-- ... et retourne au shell :
293287\q
294288```
295289
296290Testez la connexion à PostgreSQL.
297291
298292Note : par défaut, PostgreSQL essaie un login ident/unix domain socket qui n'autorise pas les mots de passe. Nous spécifions donc à l'hôte de forcer le login TCP/IP :
299293
300294``` bash
301295psql -h 127.0.0.1 -d employee -U employee -W # Login via TCP/IP. Entrez votre mot de passe.
302296```
303297
304298Assurez-vous que les DLL/so PostgreSQL et les autres bibliothèques requises soient installées - par exemple, sur Windows, elles devraient se trouver soit :
305299
306300- dans votre répertoire Lazarus + projet de destination, soit
307301- dans votre répertoire système.
308302
309303Compilez votre projet une fois (même s'il est vide), pour créer le répertoire de destination, et (sur Windows) copiez-y les DLLs.
310304
311305## Fin
312306
313307Maintenant que vous avez configuré votre base de données, vous pouvez aller vers [[SQLdb Tutorial1|le premier "vrai" tutoriel]].
314308
315309## Voir aussi
316310
317311- [[SQLdb Tutorial0/fr|SQLdb Tutorial0]] : Instructions pour configurer les tables et les données d'exemple pour la série de tutoriels.
318312- [[SQLdb Tutorial1/fr|SQLdb Tutorial1]] : 1re partie de la série de tutoriels sur les bases de données, montrant comment configurer une grille pour afficher les données.
319313- [[SQLdb Tutorial2/fr|SQLdb Tutorial2]] : 2e partie de la série de tutoriels, montrant l'édition, l'insertion, etc.
320314- [[SQLdb Tutorial3/fr|SQLdb Tutorial3]] : 3e partie de la série de tutoriels, montrant comment développer pour des bases de données multiples et utiliser une fiche de connexion.
321315- [[SQLdb Tutorial4/fr|SQLdb Tutorial4]] : 4e partie de la série de tutoriels, montrant comment utiliser les modules de données.
322316- [[Lazarus Database Overview/fr|Vue d'ensemble des bases de données pour Lazarus]] : Information sur les bases de données supportées par Lazarus. Redirige vers des notes spécifiques à certaines bases de données.
323317- [[SQLdb Package/fr|Paquet SQLdb]] : Information sur le paquetage SQLdb.
324318- [[SQLdb Programming Reference/fr|Référence de programmation SQLdb]] : Une vue d'ensemble de l'interaction entre les composants de bases de données SQLdb.
325319- [[SqlDBHowto/fr|SqlDBHowto]] : Information sur l'utilisation du paquet SQLdb.
326320- [[Working With TSQLQuery/fr|Travailler avec TSQLQuery]] : Informations sur TSQLQuery.
327321- [utilisation des paramètres](http://www.freepascal.org/docs-html/fcl/sqldb/usingparams.html)
328-
329-\
330322
331323---
332324*From the Free Pascal wiki, page "SQLdb Tutorial0/fr", as it stood on 2017-04-03 after a change by E-ric, out of the wiki's dump of 2024-05-26. 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](/wiki-contact).*

Back to history