Sign in Join
Wiki copytemporary

SQLdb Tutorial0/fr: what changed

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

Title: SQLdb Tutorial0/fr

OldNewLine
1+## Introduction
2+
3+Cet 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.
4+
5+Bien 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.
6+
7+Si 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.
8+
9+## Pré-requis
10+
11+Ce 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).
12+
13+En 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".
14+
15+Vous 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.
16+
17+## Installation de Firebird
18+
19+Au 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.
20+
21+### Installation du client/serveur Firebird
22+
23+Si 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").
24+
25+### Bibliothèques de bases de données Firebird sur Windows
26+
27+Après installation sur Windows, les DLLs du client Firebird doivent être présentes ;
28+
29+- soit dans votre répertoire système (disponibles pour tous les programmes) ;
30+- 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é).
31+
32+Si 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 :
33+
34+``` bash
35+fbclient.dll # uniquement si vous utilisez le serveur
36+# ou
37+fbembed.dll # uniquement si vous utilisez Firebird Embedded
38+firebird.msg
39+ib_util.dll
40+icudt30.dll
41+icuin30.dll
42+icuuc30.dll
43+Microsoft.VC80.CRT.manifest
44+msvcp80.dll
45+msvcr80.dll
46+```
47+
48+Renommez 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.
49+
50+Assurez-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.
51+
52+Pour 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.
53+
54+### Bibliothèques de bases de données Firebird sur d'autres systèmes
55+
56+Sur 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 :
57+
58+``` bash
59+aptitude install libfbclient2 firebird-dev # nous avons besoin de la version dev car FPC 2.6 et précédents chercheront libfbclient.so
60+```
61+
62+## Firebird ou employee.fdb non installé ?
63+
64+Si 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).
65+
66+### Création automatique
67+
68+La 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/>
69+
70+Compilez et exécutez le programme, puis connectez-vous à la base de données :
71+
72+<figure>
73+<img src="tsqlscriptsample_connect.png" title="tsqlscriptsample_connect.png" />
74+<figcaption>tsqlscriptsample_connect.png</figcaption>
75+</figure>
76+
77+Cliquez ensuite sur le bouton *Copy table creation script*, et *Run script* :
78+
79+<figure>
80+<img src="tsqlscriptsample_runfirstscript.png" title="tsqlscriptsample_runfirstscript.png" />
81+<figcaption>tsqlscriptsample_runfirstscript.png</figcaption>
82+</figure>
83+
84+Le 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*.
85+
86+En cas de problème, vous pouvez essayer les étapes manuelles ci-dessous.
87+
88+### Création manuelle
89+
90+Nous allons créer les tables CUSTOMER et EMPLOYEE qui seront utilisées dans un prochain tutoriel.
91+
92+Exécutez ces commandes SQL dans votre éditeur/utilitaire de base de données :
93+
94+``` sql
95+CREATE TABLE CUSTOMER
96+(
97+ CUST_NO INTEGER NOT NULL,
98+ CUSTOMER VARCHAR(25) NOT NULL,
99+ CITY VARCHAR(25),
100+ COUNTRY VARCHAR(15),
101+ CONSTRAINT CT_CUSTOMER_PK PRIMARY KEY (CUST_NO)
102+);
103+```
104+
105+``` sql
106+CREATE TABLE EMPLOYEE
107+(
108+ EMP_NO INTEGER NOT NULL,
109+ FIRST_NAME VARCHAR(15) NOT NULL,
110+ LAST_NAME VARCHAR(20) NOT NULL,
111+ PHONE_EXT VARCHAR(4),
112+ JOB_CODE VARCHAR(5) NOT NULL,
113+ JOB_GRADE INTEGER NOT NULL,
114+ JOB_COUNTRY VARCHAR(15) NOT NULL,
115+ SALARY NUMERIC(10,2) NOT NULL,
116+ CONSTRAINT CT_EMPLOYEE_PK PRIMARY KEY (EMP_NO)
117+);
118+```
119+
120+Quelques données pour pouvoir au moins montrer quelque chose... D'abord quelques clients :
121+
122+``` sql
123+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (1, 'Michael Design', 'San Diego', 'USA');
124+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (2, 'VC Technologies', 'Dallas', 'USA');
125+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (3, 'Klämpfl, Van Canneyt', 'Boston', 'USA');
126+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (4, 'Felipe Bank', 'Manchester', 'England');
127+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (5, 'Joost Systems, LTD.', 'Central Hong Kong', 'Hong Kong');
128+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (6, 'Van der Voort Int.', 'Ottawa', 'Canada');
129+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (7, 'Mrs. Mauvais', 'Pebble Beach', 'USA');
130+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (8, 'Asinine Vacation Rentals', 'Lihue', 'USA');
131+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (9, 'Fax', 'Turtle Island', 'Fiji');
132+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (10, 'FPC Corporation', 'Tokyo', 'Japan');
133+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (11, 'Dynamic Intelligence Corp', 'Zurich', 'Switzerland');
134+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (12, '3D-Pad Corp.', 'Paris', 'France');
135+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (13, 'Swen Export, Ltd.', 'Milan', 'Italy');
136+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (14, 'Graeme Consulting', 'Brussels', 'Belgium');
137+INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (15, 'Klenin Inc.', 'Den Haag', 'Netherlands');
138+```
139+
140+Puis quelques employés :
141+
142+``` sql
143+INSERT INTO employee(emp_no, first_name, last_name, phone_ext, job_code, job_grade,
144+ job_country, salary)
145+ VALUES (1,'William','Shatner','1702','CEO',1,'USA',48000);
146+INSERT INTO employee(emp_no, first_name, last_name, phone_ext, job_code, job_grade,
147+ job_country, salary)
148+ VALUES (2,'Ivan','Rzeszow','9802','Eng',2,'Russia',38000);
149+INSERT INTO employee(emp_no, first_name, last_name, phone_ext, job_code, job_grade,
150+ job_country, salary)
151+ VALUES (3,'Erin','Powell','1703','Admin',2,'USA',45368);
152+```
153+
154+Créez la base de données, les tables et insérez les données dans votre environnement de bases de données.
155+
156+## SQLite
157+
158+Si 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 :
159+
160+``` bash
161+sqlite employee.sqlite
162+```
163+
164+Copiez 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 :
165+
166+``` SQL
167+select * from customer;
168+```
169+
170+Terminez votre session avec
171+
172+``` SQL
173+.quit
174+```
175+
176+Un fichier appelé employee.sqlite devrait maintenant être créé dans le répertoire de votre projet.
177+
178+Assurez-vous que les DLL/so SQLite requises soient installées - par exemple, sur Windows, sqlite3.dll devrait être présent dans
179+
180+- votre répertoire Lazarus + projet de destination, ou
181+- votre répertoire système.
182+
183+En outre, si vous avez une DLL SQLite 32 bits, assurez-vous d'avoir la version 32 bits de Lazarus.
184+
185+Compilez 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.
186+
187+## PostgreSQL
188+
189+Dans 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.
190+
191+Connectez-vous à votre serveur et basculez vers le compte PostgreSQL :
192+
193+``` bash
194+su - postgres -c psql # démarrage immédiat de l'interpréteur SQL psql
195+```
196+
197+Créez un utilisateur pour la base de données et pour les tables :
198+
199+``` SQL
200+CREATE USER employee WITH PASSWORD 'hellopassword'; -- bien sûr, mettez un mot de passe à votre goût
201+-- Quelque chose comme 'CREATE ROLE' devrait s'afficher pour indiquer le succès de l'opération.
202+-- Pour changer ultérieurement le mot de passe, vous pouvez utiliser quelque chose comme
203+-- alter user employee with password '<newpasswordhere>';
204+
205+-- Nous allons empêcher le mot de passe d'expirer ; si vous souhaitez plus de sécurité, passez cette étape :
206+ALTER USER employee VALID UNTIL 'infinity'; -- le mot de passe n'expire jamais
207+
208+-- Nous allons encore un peu resserrer les choses :
209+-- ne pas permettre à un utilisateur de créer une base de données ou d'autres utilisateurs :
210+ALTER USER employee NOCREATEDB NOCREATEUSER; -- restreint la création d'objets
211+-- Quelque chose comme 'ALTER ROLE' devrait s'afficher pour indiquer le succès de l'opération.
212+
213+-- Créons notre base de données :
214+CREATE DATABASE employee;
215+-- Quelque chose comme 'CREATE DATABASE' devrait s'afficher pour indiquer le succès de l'opération.
216+
217+-- Attribuons tous les privilèges sur la base de données employee à l'utilisateur employee :
218+GRANT ALL PRIVILEGES ON DATABASE employee TO employee; -- attribue à l'utilisateur toutes les permissions sur la base de données
219+-- Quelque chose comme 'GRANT' devrait s'afficher pour indiquer le succès de l'opération.
220+
221+-- Créons la table customer, utilisant un type de donnée serial - aka autonumber/autoincrement :
222+CREATE TABLE customer
223+(
224+ cust_no serial NOT NULL,
225+ customer character varying(25) NOT NULL,
226+ city character varying(25),
227+ country character varying(15),
228+ CONSTRAINT integ_60 PRIMARY KEY (cust_no)
229+);
230+
231+-- Créons alors la table employee :
232+CREATE TABLE EMPLOYEE
233+(
234+ EMP_NO SERIAL NOT NULL,
235+ FIRST_NAME VARCHAR(15) NOT NULL,
236+ LAST_NAME VARCHAR(20) NOT NULL,
237+ PHONE_EXT VARCHAR(4),
238+ JOB_CODE VARCHAR(5) NOT NULL,
239+ JOB_GRADE INTEGER NOT NULL,
240+ JOB_COUNTRY VARCHAR(15) NOT NULL,
241+ SALARY NUMERIC(10,2) NOT NULL,
242+ CONSTRAINT CT_EMPLOYEE_PK PRIMARY KEY (EMP_NO)
243+);
244+
245+-- À présent, copiez et collez les commandes INSERT de la section ci-dessus pour insérer les données.
246+
247+-- Pour tester si les bonnes données sont présentes, entrez cette requête :
248+SELECT * FROM customer;
249+-- Vous devriez voir quelques clients.
250+
251+-- Sortie de psql :
252+\q
253+```
254+
255+À présent, vous devriez être dans la console, connecté comme utilisateur Postgres.
256+
257+Si 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 :
258+
259+``` bash
260+# Remplacez nano (p.ex. vim, emacs, joe...) et le numéro de version Postgres selon votre environnement
261+nano /etc/postgresql/8.4/main/pg_hba.conf
262+```
263+
264+Vérifiez la présence d'une ligne comme (remplacez 192.168.0.1 par votre propre adresse IP, ou range) :
265+
266+``` bash
267+# Permet l'accès depuis le réseau local, en utilisant des mots de passe crypyés en MD5 :
268+host all all 192.168.0.1/24 md5
269+```
270+
271+Ou, plus restrictif :
272+
273+``` bash
274+# Permet uniquement l'accès réseau à la base de données employee par l'utilisateur employee :
275+host employee employee 192.168.0.1/24 md5
276+```
277+
278+Si une telle ligne n'existe pas, ajoutez-la à la fin, enregistrez et fermez votre éditeur. Consultez la documentation PostgreSQL pour plus de détails.
279+
280+Rechargez les réglages PostgreSQL :
281+
282+``` bash
283+
284+psql
285+```
286+
287+puis
288+
289+``` SQL
290+
291+SELECT pg_reload_conf(); -- recharge les réglages...
292+-- ... et retourne au shell :
293+\q
294+```
295+
296+Testez la connexion à PostgreSQL.
297+
298+Note : 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 :
299+
300+``` bash
301+psql -h 127.0.0.1 -d employee -U employee -W # Login via TCP/IP. Entrez votre mot de passe.
302+```
303+
304+Assurez-vous que les DLL/so PostgreSQL et les autres bibliothèques requises soient installées - par exemple, sur Windows, elles devraient se trouver soit :
305+
306+- dans votre répertoire Lazarus + projet de destination, soit
307+- dans votre répertoire système.
308+
309+Compilez 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.
310+
311+## Fin
312+
313+Maintenant que vous avez configuré votre base de données, vous pouvez aller vers [[SQLdb Tutorial1|le premier "vrai" tutoriel]].
314+
315+## Voir aussi
316+
317+- [[SQLdb Tutorial0/fr|SQLdb Tutorial0]] : Instructions pour configurer les tables et les données d'exemple pour la série de tutoriels.
318+- [[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.
319+- [[SQLdb Tutorial2/fr|SQLdb Tutorial2]] : 2e partie de la série de tutoriels, montrant l'édition, l'insertion, etc.
320+- [[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.
321+- [[SQLdb Tutorial4/fr|SQLdb Tutorial4]] : 4e partie de la série de tutoriels, montrant comment utiliser les modules de données.
322+- [[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.
323+- [[SQLdb Package/fr|Paquet SQLdb]] : Information sur le paquetage SQLdb.
324+- [[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.
325+- [[SqlDBHowto/fr|SqlDBHowto]] : Information sur l'utilisation du paquet SQLdb.
326+- [[Working With TSQLQuery/fr|Travailler avec TSQLQuery]] : Informations sur TSQLQuery.
327+- [utilisation des paramètres](http://www.freepascal.org/docs-html/fcl/sqldb/usingparams.html)
328+
329+\
330+
331+---
332+*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