Sign in Join
Wiki copytemporary

Firebird/fr: what changed

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

OldNewLine
1-Il s'agit d'un guide sur l'utilisation de la base de données **Firebird** dans Lazarus/FPC, en utilisant Firebird avec SQLdb (la bibliothèque de base de données intégrée dans Lazarus/FPC). D'autres méthodes d'accès sont décrites dans [[Other Firebird libraries/fr|Autres bibliothèques Firebird]].
1+---
2+[[Portal:Databases|**Portail de la base de données**]]
3+Références: · [[Databases/fr|Information générale]] · [[Database libraries/fr|Bibliothèques]] · [[Database field type/fr|Types de champ]] · [[Data Controls tab/fr|Contrôles]] · [[Lazarus DB Faq/fr|FAQ]] · [[SqlDBHowto/fr|Comment faire en SQL ?]] · [[Working With TSQLQuery/fr|Travailler avec TSQLQuery]] · [[How to write in-memory database applications in Lazarus/FPC/fr|Applications de base de données en mémoire]] · Tutoriels/articles pratiques : · [[Lazarus Database Overview/fr|Vue d'ensemble]] · [[SQLdb Tutorial0/fr|0 - Configuration de la base de données]] · [[SQLdb Tutorial1/fr|1 - Commençons]] · [[SQLdb Tutorial2/fr|2 - Edition]] · [[SQLdb Tutorial3/fr|3 - Requêtes]] · [[SQLdb Tutorial4/fr|4 - Modules de données]] · [[SQLdb Programming Reference/fr|Référence de programmation SQLdb]] · Bases de données · [[Advantage Database Server/fr|Advantage]] \- [[MySQLDatabases/fr|MySQL]] \- [[mssqlconn/fr|MSSQL]] \- [[postgres/fr|Postgres]] \- Interbase \- Firebird \- [[Oracle/fr|Oracle]] \- [[ODBCConn/fr|ODBC]] \- [[TParadox/fr|Paradox]] \- [[SQLite/fr|SQLite]] \- [[Lazarus Tdbf Tutorial/fr|dBASE]] \- [[MS Access/fr|MS Access]] \- [[Zeos tutorial/fr|Zeos]]
4+
5+Il s'agit d'un guide sur l'utilisation de la base de données **Firebird** dans Lazarus/FPC, en utilisant Firebird avec SQLdb (la bibliothèque de base de données intégrée dans Lazarus/FPC). D'autres méthodes d'accès sont décrites dans [[Other Firebird libraries/fr|Autres bibliothèques Firebird]].
26
37## Vue d'ensemble
48
5-Firebird est un serveur de bases de données, open source qui est utilisé et développé depuis des décennies (il s'est développé à partir d'Interbase 6 passé en Open source par Borland). Il inclut une prise en charge riche des ordres SQL (p.ex. INSERT...RETURNING), des procédures stockées, des déclencheurs (*triggers*), etc. Vous pouvez écrire des bibliothèques d'UDFs compilées (*User-Defined Functions*) pour le serveur en Free Pascal si vous voulez étendre la liste déjà étendue de fonctions de Firebird).
9+Firebird est un serveur de bases de données, open source qui est utilisé et développé depuis des décennies (il s'est développé à partir d'Interbase 6 passé en Open source par Borland). Il inclut une prise en charge riche des ordres SQL (p.ex. INSERT...RETURNING), des procédures stockées, des déclencheurs (_triggers_), etc. Vous pouvez écrire des bibliothèques d'UDFs compilées (_User-Defined Functions_) pour le serveur en Free Pascal si vous voulez étendre la liste déjà étendue de fonctions de Firebird).
610
7-La base de données ne requiert que peu de travail manuel d'administration une fois configurée, la rendant idéale pour les petite affaires ou l'utilisation en incorporé. Il peut grossir jusqu'à l'échelle du tera-octet avec un réglage approprié, bien que PostgreSQL puisse être un meilleur choix pour de tels environnements.
11+La base de données ne requiert que peu de travail manuel d'administration une fois configurée, la rendant idéale pour les petite affaires ou l'utilisation en incorporé. Il peut grossir jusqu'à l'échelle du tera-octet avec un réglage approprié, bien que PostgreSQL puisse être un meilleur choix pour de tels environnements.
812
9-Firebird offre à la fois des bases de données incorporées (sans serveur autonome) et en client/serveur - utilisable sans avoir à changer une seule ligne de code dans Lazarus/FPC. S'il est utilisé en mode incorporé, il offre un support plus riche de SQL que [[SQLite/fr|SQLite]] ainsi qu'une migration transparente vers une base de données client-serveur, alors que SQLite ne peut être qu'en mode incorporé.
13+Firebird offre à la fois des bases de données incorporées (sans serveur autonome) et en client/serveur - utilisable sans avoir à changer une seule ligne de code dans Lazarus/FPC. S'il est utilisé en mode incorporé, il offre un support plus riche de SQL que [[SQLite/fr|SQLite]] ainsi qu'une migration transparente vers une base de données client-serveur, alors que SQLite ne peut être qu'en mode incorporé.
1014
11-La dernière version stable, Firebird 2.5, tourne sous Windows (32- et 64-bit), diverses versions de Linux (32- et 64-bit), (Sparc et Intel), HP-UX (PA-Risc), OSX et Androïd.
15+La dernière version stable, Firebird 2.5, tourne sous Windows (32- et 64-bit), diverses versions de Linux (32- et 64-bit), (Sparc et Intel), HP-UX (PA-Risc), OSX et Androïd.
1216
13-Il n'est pas disponible sur Windows CE/Windows Mobile.
17+Il n'est pas disponible sur Windows CE/Windows Mobile.
1418
15-La prise en charge de Firebird dans la bibliothèque SQLdb de FPC est plutôt bonne, comparable au niveau de celle de [[postgres/fr|PostgreSQL]].
19+La prise en charge de Firebird dans la bibliothèque SQLdb de FPC est plutôt bonne, comparable au niveau de celle de [[postgres/fr|PostgreSQL]].
1620
1721## Documentation
1822
19-La documentation officielle est incluse dans FPC 2.6.2+ : [Documentation SQLDB pour IBConnection](http://www.freepascal.org/docs-html/fcl/ibconnection/index.html).
23+La documentation officielle est incluse dans FPC 2.6.2+ : [Documentation SQLDB pour IBConnection](<http://www.freepascal.org/docs-html/fcl/ibconnection/index.html>).
2024
2125## Installation en client/serveur et en incorporé
2226
23-Firebird peut fonctionner en mode client/serveur en mode incorporé.
27+Firebird peut fonctionner en mode client/serveur en mode incorporé.
2428
25-*Client/Server* veut dire que vous avez un serveur Firebird quelque part : soit sur votre propre machine locale soit sur une autre machine accessible par votre réseau. Les connexions au serveur passent par TCP/IP ; en spécifiant la connexion, le nom d'hôte (*hostname*) contient un nom ou une adresse IP. La DLL firebird dont vous avez besoin pour ceci est *fbclient.dll* (*avec ses fichiers de support*).
29+_Client/Server_ veut dire que vous avez un serveur Firebird quelque part : soit sur votre propre machine locale soit sur une autre machine accessible par votre réseau. Les connexions au serveur passent par TCP/IP ; en spécifiant la connexion, le nom d'hôte (_hostname_) contient un nom ou une adresse IP. La DLL firebird dont vous avez besoin pour ceci est _fbclient.dll_ (_avec ses fichiers de support_).
2630
27-*Embedded Firebird* veurt dire que votre application charge les DLLs Firebird sur une machine locale. En spécifiant la connexion, le nom d'hôte est toujours vide. La DLL Firebird dont vous avez besoin est 'fbembed.dll*(*avec ses fichiers de support'').
31+_Embedded Firebird_ veurt dire que votre application charge les DLLs Firebird sur une machine locale. En spécifiant la connexion, le nom d'hôte est toujours vide. La DLL Firebird dont vous avez besoin est 'fbembed.dll _(_ avec ses fichiers de support _)._
2832
29-Voir [[Firebird embedded/fr|le wiki sur Firebird incorporé]] pour plus de détails.
33+Voir [[Firebird embedded/fr|le wiki sur Firebird incorporé]] pour plus de détails.
3034
31-Notez que *fbembed.dll* peut être utilisé à la fois en utilisation client/serveur et en incorporé, ainsi installer seulement cette DLL peut être une chose maline à faire.
35+Notez que _fbembed.dll_ peut être utilisé à la fois en utilisation client/serveur et en incorporé, ainsi installer seulement cette DLL peut être une chose maline à faire.
3236
3337### Windows
3438
35-Win64 : Veuillez lire l'avertissement [[Windows Programming Tips/fr|ici]] sur l'emploi de certaines versions Win64 de FPC/Lazarus.
39+Win64 : Veuillez lire l'avertissement [[Windows Programming Tips/fr|ici]]> "Windows Programming Tips/fr") sur l'emploi de certaines versions Win64 de FPC/Lazarus.
3640
37-Sur Windows : (ceci s'applique à tous les pilotes SQLdb) vous devez avoir la DLL **fbclient.dll** (ou **fbembed.dll**) et DLLs de prise en charge installées dans :
41+Sur Windows : (ceci s'applique à tous les pilotes SQLdb) vous devez avoir la DLL **fbclient.dll** (ou **fbembed.dll**) et DLLs de prise en charge installées dans :
3842
39-- le répertoire du projet **et** le répertoire de sortie de l'exécutable/celui de l'application (p.ex. lib/something dans le répertoire de votre projet).
40-- ou un répertoire dans votre PATH (et non pas dans votre répertoire système).
41-- Si vous voulez utilisez le répertoire système, veuillez utiliser l'installateur officiel et cocher "copy fbclient to system directory".
43+ * le répertoire du projet **et** le répertoire de sortie de l'exécutable/celui de l'application (p.ex. lib/something dans le répertoire de votre projet).
44+ * ou un répertoire dans votre PATH (et non pas dans votre répertoire système).
45+ * Si vous voulez utilisez le répertoire système, veuillez utiliser l'installateur officiel et cocher "copy fbclient to system directory".
4246
43-Comme avec toutes DLLs (base de données), la bitité (pas de terme pour *bitness*, largeur du bus d'adressage, 32 ou 64 bit) : utilisez une bibliothèque 32 bit pour un programme compilé en 32 bit et une bibliothèque 64 bit pour un programme compilé en 64 bit.
47+Comme avec toutes DLLs (base de données), la bitité (pas de terme pour _bitness_ , largeur du bus d'adressage, 32 ou 64 bit) : utilisez une bibliothèque 32 bit pour un programme compilé en 32 bit et une bibliothèque 64 bit pour un programme compilé en 64 bit.
4448
4549### Unix/Linux/OSX
4650
47-Sur Linux/OSX/FreeBSD, la bibliothèque client Firebird devrait être installée (p.ex. par votre gestionnaire de paquets ; installer le paquet normal et le paquet -dev), ou elle devrait être placée dans le chemin de recherche des bibliothèques.
51+Sur Linux/OSX/FreeBSD, la bibliothèque client Firebird devrait être installée (p.ex. par votre gestionnaire de paquets ; installer le paquet normal et le paquet -dev), ou elle devrait être placée dans le chemin de recherche des bibliothèques.
4852
49-FPC recherche les noms de bibliothèque les plus communes (p.ex. libfbclient.so.2.5, libgds.so et libfbembed.so.2.5 ; veuillez vérifier le fichier ibase60.inc si votre version est différente). Si vous le souhaitez, vous pouvez spécifier explicitement le nom de bibliothèque. Il y a deux façons de faire pour cela :
53+FPC recherche les noms de bibliothèque les plus communes (p.ex. libfbclient.so.2.5, libgds.so et libfbembed.so.2.5 ; veuillez vérifier le fichier ibase60.inc si votre version est différente). Si vous le souhaitez, vous pouvez spécifier explicitement le nom de bibliothèque. Il y a deux façons de faire pour cela :
5054
51-- Utiliser le composant [[TSQLDBLibraryLoader/fr|TSQLDBLibraryLoader]] de sqldblib (FPC 2.7.1). Fonctionne pour tous les composants connecteurs de SQLdb.
52-- Appeler
53- ``` pascal
54- function InitialiseIBase60(Const LibraryName : AnsiString) : integer;
55- ```
55+ * Utiliser le composant [[TSQLDBLibraryLoader/fr|TSQLDBLibraryLoader]] de sqldblib (FPC 2.7.1). Fonctionne pour tous les composants connecteurs de SQLdb.
56+ * Appeler
57+```
58+function InitialiseIBase60(Const LibraryName : AnsiString) : integer;
59+```
5660
57- avec la nom de bibliothèque correct (vous pouvez avoir besoin d'utiliser l'unité ibase60dyn pour cela).
61+avec la nom de bibliothèque correct (vous pouvez avoir besoin d'utiliser l'unité ibase60dyn pour cela).
5862
5963## Exemples de connexion
6064
61-Exemple pour le client/serveur :
62-
63-```text
65+Exemple pour le client/serveur :
66+```
6467Hostname: 192.168.1.1
65-* The database is on the server with IP address 192.168.1.1.
66-DatabaseName: /interdata/example.fdb
67-* The name of the database file is "example.fdb" in the /interdata directory of the server (the machine with IP address 192.168.1.1).
68-Username: SYSDBA
69-Password: masterkey
68+ * The database is on the server with IP address 192.168.1.1.
69+ DatabaseName: /interdata/example.fdb
70+ * The name of the database file is "example.fdb" in the /interdata directory of the server (the machine with IP address 192.168.1.1).
71+ Username: SYSDBA
72+ Password: masterkey
7073```
7174
72-Autre exemple pour le client/serveur :
73-
74-``` pascal
75+Autre exemple pour le client/serveur :
76+```
7577Hostname: dbhost
76-* The database is on the server with the host name dbhost
77-DatabaseName: F:\Program Files\firebird\examples\employee.fdb
78-* The name of the database file is "employee.fdb" in the Program Files\firebird\examples directory on the F: drive of dbhost.
79-Username: SYSDBA
80-Password: masterkey
78+ * The database is on the server with the host name dbhost
79+ DatabaseName: F:\Program Files\firebird\examples\employee.fdb
80+ * The name of the database file is "employee.fdb" in the Program Files\firebird\examples directory on the F: drive of dbhost.
81+ Username: SYSDBA
82+ Password: masterkey
8183```
8284
83-Un exemple en incorporé :
84-
85-```text
85+Un exemple en incorporé :
86+```
8687Hostname: <empty string>
87-* Leaving the hostname empty selects embedded use.
88-DatabaseName: test.fdb
89-* The database file is "test.fdb" in the directory where the application runs (make sure fbembed.dll is in the application executable directory)
90-Username: SYSDBA
91-* On embedded, you do have to specify a username...
92-Password: <empty string>
93-* ... but it doesn't matter what password you give.
88+ * Leaving the hostname empty selects embedded use.
89+ DatabaseName: test.fdb
90+ * The database file is "test.fdb" in the directory where the application runs (make sure fbembed.dll is in the application executable directory)
91+ Username: SYSDBA
92+ * On embedded, you do have to specify a username...
93+ Password: <empty string>
94+ * ... but it doesn't matter what password you give.
9495```
9596
9697## Solution à des problèmes client/serveur
9798
98-Assurez-vous que vosu avez démarré le serveur Interbase/Firebird sur le serveur IP/hostname que vous avez spécifié. Vous pouvez tester la connectivité avec telnet sur la machine. Habituellement, Firebird écoute sur le port 3050 :
99-
100-``` bash
99+Assurez-vous que vosu avez démarré le serveur Interbase/Firebird sur le serveur IP/hostname que vous avez spécifié. Vous pouvez tester la connectivité avec telnet sur la machine. Habituellement, Firebird écoute sur le port 3050 :
100+```
101101telnet 192.168.1.1 3050
102102```
103103
104-Vous devriez voir quelque chose, peut-être juste un écran blanc, mais vous pouvez tapez quelque chose. Cela signifie que vous pouvez envoyer de la donnée vers la base de données Firebird.\
105-Pour des informations plus détaillées, veuillez consulter la [documentation Firebird](https://www.firebirdsql.org/en/documentation/).
104+Vous devriez voir quelque chose, peut-être juste un écran blanc, mais vous pouvez tapez quelque chose. Cela signifie que vous pouvez envoyer de la donnée vers la base de données Firebird.
105+Pour des informations plus détaillées, veuillez consulter la [documentation Firebird](<https://www.firebirdsql.org/en/documentation/>).
106106
107107## Surveillance des événements
108108
109-FPC/Lazarus vient avec un composant pour surveiller les événements provenant des bases de données de Firebird. Consultez [[TFBEventMonitor/fr|TFBEventMonitor]].
109+FPC/Lazarus vient avec un composant pour surveiller les événements provenant des bases de données de Firebird. Consultez [[TFBEventMonitor/fr|TFBEventMonitor]].
110110
111111## Création d'objets par programmation
112112
113-Bien que vous puissiez utiliser des outils tels que Flamerobin pour créer des tables, etc., vous pouvez également les créer par programme ou dynamiquement, ce qui pourrait être utile lorsque vous souhaitez que vos programmes mettent à jour les schémas existants de la base de données vers un nouveau schéma.
114-
115-Vous pouvez utiliser p.exe. TSQLQuery.ExecSQL pour réaliser cette tâche :
113+Bien que vous puissiez utiliser des outils tels que Flamerobin pour créer des tables, etc., vous pouvez également les créer par programme ou dynamiquement, ce qui pourrait être utile lorsque vous souhaitez que vos programmes mettent à jour les schémas existants de la base de données vers un nouveau schéma.
116114
117-``` pascal
115+Vous pouvez utiliser p.exe. TSQLQuery.ExecSQL pour réaliser cette tâche :
116+```
118117Query.ExecSQL('CREATE TABLE TEST(ID INTEGER NOT NULL, TESTNAME VARCHAR(800))');
119-// You need to commit the transaction after DDL before any DML - SELECT, INSERT etc statements.
120-// Otherwise the SQL won't see the created objects
118+ // You need to commit the transaction after DDL before any DML - SELECT, INSERT etc statements.
119+ // Otherwise the SQL won't see the created objects
121120```
122121
123-Pour faire ceci, utiliser l'objet TSQLScript - voir [[TSQLScript/fr|TSQLScript]].
122+Pour faire ceci, utiliser l'objet TSQLScript - voir [[TSQLScript/fr|TSQLScript]].
124123
125124## Administration de la base de données
126125
127-FPC/Lazarus a un composant pour l'administration de base de données ; voir [[TFBAdmin/fr|TFBAdmin]].
126+FPC/Lazarus a un composant pour l'administration de base de données ; voir [[TFBAdmin/fr|TFBAdmin]].
128127
129128## Problèmes courants et résolutions
130129
131-Parfois, utiliser Firebird à Lazare semble être délicat. Veuillez trouver les solutions ci-dessous.
130+Parfois, utiliser Firebird à Lazare semble être délicat. Veuillez trouver les solutions ci-dessous.
132131
133132### Tentative de mise à jour de colonne en lecture seule / champs COMPUTED BY
134133
135-Si vous avez des champs COMPUTED BY (champs calculés du côté du serveur) dans votre table Firebird, SQLdb n'indique pas que ce sont des champs en lecture seule (pour des raisons de performances)
136-
137-Dans ce cas, les ordres INSERTSQL,UPDATESQL générés automatiquement peuvent amener des messages d'erreur comme "attempted update of read-only column". La solution consiste à spécifier que le champ en question ne peut pas être mis à jour après avoir défini la propriété SQL du TSQLQuery, quelque chose comme :
134+Si vous avez des champs COMPUTED BY (champs calculés du côté du serveur) dans votre table Firebird, SQLdb n'indique pas que ce sont des champs en lecture seule (pour des raisons de performances)
138135
139-``` pascal
136+Dans ce cas, les ordres INSERTSQL,UPDATESQL générés automatiquement peuvent amener des messages d'erreur comme "attempted update of read-only column". La solution consiste à spécifier que le champ en question ne peut pas être mis à jour après avoir défini la propriété SQL du TSQLQuery, quelque chose comme :
137+```
140138// Disable updating this field or searching for changed values as user cannot change it
141-sqlquery1.fieldbyname('full_name').ProviderFlags:=[];
139+ sqlquery1.fieldbyname('full_name').ProviderFlags:=[];
142140```
143141
144142### Bigint: précision perdue
145143
146-Si vous utilisez le type de données BIGINT (entier signé 64 bit) dans Firebird, veuillez utilisez .AsLargeInt au lieu de .AsInteger pour les paramètres :
147-
148-``` pascal
144+Si vous utilisez le type de données BIGINT (entier signé 64 bit) dans Firebird, veuillez utilisez .AsLargeInt au lieu de .AsInteger pour les paramètres :
145+```
149146// Assuming ID is bigint here
150-sqlquery1.sql.text := 'insert into ADDRESS (ID) values (:ID)';
151-// Use this:
152-sqlquery1.params.parambyname('ID').aslargeint := <some qword or 64 bit integer variable>;
153-// Do not use this:
154-//sqlquery1.params.parambyname('ID').asinteger := <some qword or 64 bit integer variable>;
155-...
147+ sqlquery1.sql.text := 'insert into ADDRESS (ID) values (:ID)';
148+ // Use this:
149+ sqlquery1.params.parambyname('ID').aslargeint := <some qword or 64 bit integer variable>;
150+ // Do not use this:
151+ //sqlquery1.params.parambyname('ID').asinteger := <some qword or 64 bit integer variable>;
152+ ...
156153```
157154
158-... sinon cous pourriez obtenir des erreurs comme des clés primaires dupliquées - si vous utilisez des BIGINT comme clé primaire.
155+... sinon cous pourriez obtenir des erreurs comme des clés primaires dupliquées - si vous utilisez des BIGINT comme clé primaire.
159156
160157### Types de données Booléens
161158
162-Les versions de Firebird antérieure à 3.0 ne prennent pas en charge les types de données booléens.
163-
164-Au moins sur FPC trunk (2.7.1), ce type de données peut être émulé :
159+Les versions de Firebird antérieure à 3.0 ne prennent pas en charge les types de données booléens.
165160
166-Utiliser un domaine qui utilise un type SMALLINT (un autre type d'entier peut convenir - mercide tester et d'ajustyer le texte) :
161+Au moins sur FPC trunk (2.7.1), ce type de données peut être émulé :
167162
168-``` SQL
163+Utiliser un domaine qui utilise un type SMALLINT (un autre type d'entier peut convenir - mercide tester et d'ajustyer le texte) :
164+```
169165CREATE DOMAIN "BOOLEAN"
170- AS SMALLINT
171- CHECK (VALUE IS NULL OR VALUE IN (-1,0,1))
172- /* -1 used for compatibility with FPC SQLDB; 1 is used by many other data access layers */
173-;
166+ AS SMALLINT
167+ CHECK (VALUE IS NULL OR VALUE IN (-1,0,1))
168+ /* -1 used for compatibility with FPC SQLDB; 1 is used by many other data access layers */
169+ ;
174170```
175171
176-Utilisez ce type domaine pour votre champ/colonne p.ex.
177-
178-``` SQL
172+Utilisez ce type domaine pour votre champ/colonne p.ex.
173+```
179174CREATE TABLE MYTABLE
180-(
181-...
182- MYBOOLEANCOLUMN "BOOLEAN",
183-);
175+ (
176+ ...
177+ MYBOOLEANCOLUMN "BOOLEAN",
178+ );
184179```
185180
186-- Maintenant vous pouvez utiliser .AsBoolean pour l'affectation des valeurs du champ etc.
181+ * Maintenant vous pouvez utiliser .AsBoolean pour l'affectation des valeurs du champ etc.
187182
188183**A faire : vérifier que cela marche avec les grilles de Lazarus.**
189184
190-### Problèmes INSERT INTO...RETURNING /Cursor is not open
191-
192-= Si vous essayez de faire une sélection SQL (p.ex. Query.Open) avec du SQL comme ceci :
185+### Problèmes INSERT INTO...RETURNING /Cursor is not open =
193186
194-``` SQL
187+Si vous essayez de faire une sélection SQL (p.ex. Query.Open) avec du SQL comme ceci :
188+```
195189INSERT INTO PEOPLE (NICKNAME) VALUES ('Superman') RETURNING ID
196190```
197191
198-et obtenez une erreur comme ceci :
199-
200-```dos
201-Database error: : Fetch :
202- -Dynamic SQL Error
203- -SQL error code = -504
204- -Invalid cursor reference
205- -Cursor is not open(error code: 335544569)
192+et obtenez une erreur comme ceci :
206193```
207-
208-en exécutant FPC 2.6.0 (fourni avec Lazarus 1.0) ou antérieur, alors vous êtes certainement en face d'un bug de l'analyseur FCP SQLdb.
194+Database error:  : Fetch :
195+ -Dynamic SQL Error
196+ -SQL error code = -504
197+ -Invalid cursor reference
198+ -Cursor is not open(error code: 335544569)
199+```
209200
210-SQLdb pense que l'ordre que vous exécutez est un ordre INSERT normal, lequel ne retourne pas de données. Evidemment, il pourrait retourner de la donnée. Les nouvelles versions ont résolu ce problème.
201+en exécutant FPC 2.6.0 (fourni avec Lazarus 1.0) ou antérieur, alors vous êtes certainement en face d'un bug de l'analyseur FCP SQLdb.
211202
212-Si vous utilisez des générateurs/séquences pour vos clés primaires (comme beaucoup le font), une méthode consiste à obtenir d'abord le prochain numéro de la séquence :
203+SQLdb pense que l'ordre que vous exécutez est un ordre INSERT normal, lequel ne retourne pas de données. Evidemment, il pourrait retourner de la donnée. Les nouvelles versions ont résolu ce problème.
213204
214-``` SQL
215-SELECT NEXT VALUE FOR GEN_PEOPLEID FROM RDB$DATABASE /* If your generator name is GEN_PEOPLEID */
205+Si vous utilisez des générateurs/séquences pour vos clés primaires (comme beaucoup le font), une méthode consiste à obtenir d'abord le prochain numéro de la séquence :
216206```
207+SELECT NEXT VALUE FOR GEN_PEOPLEID FROM RDB$DATABASE /* If your generator name is GEN_PEOPLEID */
208+```
217209
218-et vous l'utilisez ensuite dans un INSERT normal. Voir [FAQ entry](http://www.firebirdfaq.org/faq111/%7CFirebird)
210+et vous l'utilisez ensuite dans un INSERT normal. Voir [FAQ entry](<http://www.firebirdfaq.org/faq111/%7CFirebird>)
219211
220212### Locate ne semble pas fonctionner
221213
222-Source: [Issue \##21988](https://bugs.freepascal.org/view.php?id=#21988) En exécutant Locate sur des champs CHAR UTF8 (ou probablement sur d'autres jeux de caractères multi-octets), Locate peut ne pas trouver votre enregistrement.
223-
224-Le problème concerne principalement le jeu de caractères UTF8 utilisé et comment Firebird rapporte la longueur de la colonne. Dans le cas de UTF8 Firebird, la longueur de colonne maximale (en octets) est de 4 * "longueur de caractère". Donc, si vous avez une colonne définie comme char (8), Firebird rapporte 4 * 8 = 32. Les valeurs sont cadrées à droite sur cette longueur de 32.
214+Source: [Issue ##21988](<https://bugs.freepascal.org/view.php?id=#21988>) En exécutant Locate sur des champs CHAR UTF8 (ou probablement sur d'autres jeux de caractères multi-octets), Locate peut ne pas trouver votre enregistrement.
225215
226-En localisant, vous dites '57200001', il n'y a pas de correspondance car le champ stocke actuellement '57200001 ........................' (les espaces de fin sont représentés pas des points).
216+Le problème concerne principalement le jeu de caractères UTF8 utilisé et comment Firebird rapporte la longueur de la colonne. Dans le cas de UTF8 Firebird, la longueur de colonne maximale (en octets) est de 4 * "longueur de caractère". Donc, si vous avez une colonne définie comme char (8), Firebird rapporte 4 * 8 = 32. Les valeurs sont cadrées à droite sur cette longueur de 32.
227217
228-Solution de contournement : réécrivez votre requête SELECT:
218+En localisant, vous dites '57200001', il n'y a pas de correspondance car le champ stocke actuellement '57200001 ........................' (les espaces de fin sont représentés pas des points).
229219
230-``` pascal
220+Solution de contournement : réécrivez votre requête SELECT:
221+```
231222SELECT substring(THEFIELD from 1 for 8) AS THEFIELD ...
232223```
233-
234-```text
224+```
235225ou
236226```
237-
238-``` pascal
227+```
239228SELECT cast(THEFIELD as varchar(8)) as THEFIELD ...
240229```
241230
242-ou utilisez des champs VARCHAR.
231+ou utilisez des champs VARCHAR.
243232
244-Remarque : ce problème peut survenir dans d'autres bases de données selon la façon dont elle rapporte la longueur.
233+Remarque : ce problème peut survenir dans d'autres bases de données selon la façon dont elle rapporte la longueur.
245234
246235## Transactions avancées
247236
248-Sources de ces informations/lectures supplémentaire :
237+Sources de ces informations/lectures supplémentaire :
249238
250-- [Comprendre les transactions de firebird](http://www.ibphoenix.com/resources/documents/how_to/doc_400) article très détaillé.
251-- Guide des API d'Interbase 6 (valable pour Firebird+Interbase), page 63 (en version anglaise) et suivantes.
252-- [Vue d'ensemble des réglages de transaction en Interbase](http://conferences.embarcadero.com/article/32280)
253-- [Explication détaillée des paramètres dans Firebird](http://tech.groups.yahoo.com/group/firebird-support/message/58653)
254-- [Vue d'ensemble des réglages dans Firebird](http://fhasovic.blogspot.com/2005/02/transaction-isolation-levels-in.html)
255-- [Niveaux d'isolation dans FIBPlus](http://www.devrace.com/en/fibplus/articles/3292.php)
256-- README.set_transaction.txt dans le répertoire de documentation de Firebird 2.5.
239+ * [Comprendre les transactions de firebird](<http://www.ibphoenix.com/resources/documents/how_to/doc_400>) article très détaillé.
240+ * Guide des API d'Interbase 6 (valable pour Firebird+Interbase), page 63 (en version anglaise) et suivantes.
241+ * [Vue d'ensemble des réglages de transaction en Interbase](<http://conferences.embarcadero.com/article/32280>)
242+ * [Explication détaillée des paramètres dans Firebird](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>)
243+ * [Vue d'ensemble des réglages dans Firebird](<http://fhasovic.blogspot.com/2005/02/transaction-isolation-levels-in.html>)
244+ * [Niveaux d'isolation dans FIBPlus](<http://www.devrace.com/en/fibplus/articles/3292.php>)
245+ * README.set_transaction.txt dans le répertoire de documentation de Firebird 2.5.
257246
258247### Niveaux d'isolation de transaction
259248
260-Si vous le voulez, vous pouvez changer les niveaux d'isolation de transaction en ajoutant une ligne dans la propriété Parameters de la transaction :
261-
262-- `isc_tpb_read_committed` : vous voyez tous les changements commis (*committed*) par les autres transactions.
263-- `isc_tpb_concurrency` aussi appelé Snapshot : vous voyez la base de données telle qu'elle était quand la transaction a commencé. Plus coûteux (*Has more overhead*) que isc_tpb_read_committed. Mieux que Sérialisable ANSI car il n'y pas de lecture fantôme.
264-- `isc_tpb_consistency` aussi appelé Stabilité de Table : vue des données stable, sérialisable, mais verrouille les tables. Il est peu probable que vous ayez besoin de cela.
249+Si vous le voulez, vous pouvez changer les niveaux d'isolation de transaction en ajoutant une ligne dans la propriété Parameters de la transaction :
265250
266-Exemple:
251+ * `isc_tpb_read_committed` : vous voyez tous les changements commis (_committed_) par les autres transactions.
252+ * `isc_tpb_concurrency` aussi appelé Snapshot : vous voyez la base de données telle qu'elle était quand la transaction a commencé. Plus coûteux (_Has more overhead_) que isc_tpb_read_committed. Mieux que Sérialisable ANSI car il n'y pas de lecture fantôme.
253+ * `isc_tpb_consistency` aussi appelé Stabilité de Table : vue des données stable, sérialisable, mais verrouille les tables. Il est peu probable que vous ayez besoin de cela.
267254
268-``` pascal
255+Exemple:
256+```
269257SQLTransaction1.Params.text:='isc_tpb_read_committed';
270258```
271259
272-Vous pouvez aussi ajouter des paramètres additionnels qui ont un effet sur la transaction (repris depuis le fichier source ibconnection.pp et [1](http://conferences.embarcadero.com/article/32280)) :
260+Vous pouvez aussi ajouter des paramètres additionnels qui ont un effet sur la transaction (repris depuis le fichier source ibconnection.pp et [[1]](<http://conferences.embarcadero.com/article/32280>)) :
273261
274262### Mode d'accès
275263
276-Ceci permet de lire seulement ou de lire/écrire :
264+Ceci permet de lire seulement ou de lire/écrire :
277265
278-- `isc_tpb_read`: permission en lecture
279-- `isc_tpb_write`: permission en lecture+écriture
266+ * `isc_tpb_read`: permission en lecture
267+ * `isc_tpb_write`: permission en lecture+écriture
280268
281-### Résolution de verrous (*Lock resolution*)
269+### Résolution de verrous (_Lock resolution_)
282270
283-- `isc_tpb_nowait` : si une autre transaction édite l'enregistrement alors ne pas attendre.
284-- `isc_tpb_wait` : si une autre transaction édite l'enregistrement alors attendre pour finir.
271+ * `isc_tpb_nowait` : si une autre transaction édite l'enregistrement alors ne pas attendre.
272+ * `isc_tpb_wait` : si une autre transaction édite l'enregistrement alors attendre pour finir.
285273
286-if another transaction is editing the record then wait for it to finish. Peut atténuer les "verrous en direct" en contention intense ([2](http://tech.groups.yahoo.com/group/firebird-support/message/58653)). Voir dessous pour le valeurs de timeout.
274+if another transaction is editing the record then wait for it to finish. Peut atténuer les "verrous en direct" en contention intense ([[2]](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>)). Voir dessous pour le valeurs de timeout.
287275
288276### Réservation de table
289277
290-Traite les verrous de table entière.
278+Traite les verrous de table entière.
291279
292-- `isc_tpb_shared` : spécifiez d'abord ceci, ensuite soit lock_read ou lock_write pour une ou plusieurs tables. Mode de lecture ou écriture partagée pour des tables.
293-- `isc_tpb_protected` : Spécifiez d'abord cela puis soit lock_read ou lock_write pour une ou plusieurs tables. Verrouille des tables ; peut permettre un fonctionnement sans blocage (*deadlock-free*) au coût de transactions différées.
294-- `isc_tpb_lock_read` : Définit un verrou en lecture. Spécifier la table à verrouiller, p.ex. isc_tpb_lock_read=CUSTOMERS.
295-- `isc_tpb_lock_write` : Définit un verrou en lecture/écriture. Spécifier quelle table est à verrouiller, p.ex. isc_tpb_lock_read=CUSTOMERS.
280+ * `isc_tpb_shared` : spécifiez d'abord ceci, ensuite soit lock_read ou lock_write pour une ou plusieurs tables. Mode de lecture ou écriture partagée pour des tables.
281+ * `isc_tpb_protected` : Spécifiez d'abord cela puis soit lock_read ou lock_write pour une ou plusieurs tables. Verrouille des tables ; peut permettre un fonctionnement sans blocage (_deadlock-free_) au coût de transactions différées.
282+ * `isc_tpb_lock_read` : Définit un verrou en lecture. Spécifier la table à verrouiller, p.ex. isc_tpb_lock_read=CUSTOMERS.
283+ * `isc_tpb_lock_write` : Définit un verrou en lecture/écriture. Spécifier quelle table est à verrouiller, p.ex. isc_tpb_lock_read=CUSTOMERS.
296284
297-Combinaisons:
285+Combinaisons:
298286
299-- Shared, lock_write : transactions en écriture avec concurrency ou en isolation read committed, qui peuvent mettre à jour la table. Toutes les transactions peuvent lire la table.
300-- Shared, lock_read : toute transaction peut lire ou écrire.
301-- Protected, lock_write : Les autres transactions ne peuvent pas mettre à jour la table. Seules les transactions en concurrency et en read committed peuvent lire la table.
302-- Protected, lock_read : Les autres transactions ne peuvent pas mettre à jour la table. Toute transaction peut lire la table.
287+ * Shared, lock_write : transactions en écriture avec concurrency ou en isolation read committed, qui peuvent mettre à jour la table. Toutes les transactions peuvent lire la table.
288+ * Shared, lock_read : toute transaction peut lire ou écrire.
289+ * Protected, lock_write : Les autres transactions ne peuvent pas mettre à jour la table. Seules les transactions en concurrency et en read committed peuvent lire la table.
290+ * Protected, lock_read : Les autres transactions ne peuvent pas mettre à jour la table. Toute transaction peut lire la table.
303291
304292### Versions d'enregistrement
305293
306-Ce réglage est en apparence pertinent uniquement pour le mode d'isolation isc_tpb_read_committed pour les enregistrements étant modifiés par d'autres transactions :
294+Ce réglage est en apparence pertinent uniquement pour le mode d'isolation isc_tpb_read_committed pour les enregistrements étant modifiés par d'autres transactions :
307295
308-- `isc_tpb_no_rec_version` : Seul l'enregistrement le plus récent est lu. Peut être utile pour les opération d'insertion en batch/bulk avec isc_tpb_read_committed.
309-- `isc_tpb_rec_version` : La dernière version validée (*committed*) est lue, même lorsque l'autre transaction a d'autres modifications non validées **note: vérifiez ceci**. Plus de charge que isc_tpb_no_rec_version.
296+ * `isc_tpb_no_rec_version` : Seul l'enregistrement le plus récent est lu. Peut être utile pour les opération d'insertion en batch/bulk avec isc_tpb_read_committed.
297+ * `isc_tpb_rec_version` : La dernière version validée (_committed_) est lue, même lorsque l'autre transaction a d'autres modifications non validées **note: vérifiez ceci**. Plus de charge que isc_tpb_no_rec_version.
310298
311299### Options diverses
312300
313-Pour être complet, quelques options supplémentaires apparaissant dans le code FPC. Vous utiliserez probablement isc_tpb_no_auto_undo pour accélérer les insertions/mises à jour en différé.
301+Pour être complet, quelques options supplémentaires apparaissant dans le code FPC. Vous utiliserez probablement isc_tpb_no_auto_undo pour accélérer les insertions/mises à jour en différé.
314302
315-- isc_tpb_exclusive (apparemment traduit par protected en Firebird, voir [3](http://tech.groups.yahoo.com/group/firebird-support/message/58653))
316-- isc_tpb_verb_time (relatif aux contraintes différées, qui pourraient s'exécuter au temps du verbe (*verb time*) ou lors du commit. Firebird : non implémenté, utilise toujours le temps du verbe.
317-- isc_tpb_commit_time (relatif aux contraintes différées, qui pourraient s'exécuter au temps du verbe (*verb time*) ou lors du commit. Firebird : non implémenté, utilise toujours le temps du verbe.
318-- isc_tpb_ignore_limbo (ignore les enregistrements créés par des transactions dans les limbes (*limbo*). Les transactions dans les limbes sont des validations (*commit*) à deux phases qui échouent dans des transactions multi-bases. Il est peut probable que vous ayez besoin de cette fonctionnalité).
319-- isc_tpb_autocommit (valide automatiquement cette transaction : chaque ordre est une transaction séparée. Sans doute spécifiquement prévu pour le pilote JDBC JayBrid).
320-- isc_tpb_restart_requests (apparemment recherche les requêtes dans la connexion qui ont été actives dans une autre transaction, les débobinent (*unwinds*), et les recommencent dans une nouvelle transaction).
321-- isc_tpb_no_auto_undo (désactive le journal de défaire (*undo*) au niveau de la transaction, pratique pour obtenir le débit maximal en réalisant une mise à jour différée (*batch*). Aucun effet en lecture de donnée).
322-- isc_tpb_lock_timeout (spécifiez le nombre de secondes d'attente de la libération du verrou. Si vous utilisez isc_tpb_wait. Si cette valeur est atteinte sans libération du verrou, une erreur est rapportée).
303+ * isc_tpb_exclusive (apparemment traduit par protected en Firebird, voir [[3]](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>))
304+ * isc_tpb_verb_time (relatif aux contraintes différées, qui pourraient s'exécuter au temps du verbe (_verb time_) ou lors du commit. Firebird : non implémenté, utilise toujours le temps du verbe.
305+ * isc_tpb_commit_time (relatif aux contraintes différées, qui pourraient s'exécuter au temps du verbe (_verb time_) ou lors du commit. Firebird : non implémenté, utilise toujours le temps du verbe.
306+ * isc_tpb_ignore_limbo (ignore les enregistrements créés par des transactions dans les limbes (_limbo_). Les transactions dans les limbes sont des validations (_commit_) à deux phases qui échouent dans des transactions multi-bases. Il est peut probable que vous ayez besoin de cette fonctionnalité).
307+ * isc_tpb_autocommit (valide automatiquement cette transaction : chaque ordre est une transaction séparée. Sans doute spécifiquement prévu pour le pilote JDBC JayBrid).
308+ * isc_tpb_restart_requests (apparemment recherche les requêtes dans la connexion qui ont été actives dans une autre transaction, les débobinent (_unwinds_), et les recommencent dans une nouvelle transaction).
309+ * isc_tpb_no_auto_undo (désactive le journal de défaire (_undo_) au niveau de la transaction, pratique pour obtenir le débit maximal en réalisant une mise à jour différée (_batch_). Aucun effet en lecture de donnée).
310+ * isc_tpb_lock_timeout (spécifiez le nombre de secondes d'attente de la libération du verrou. Si vous utilisez isc_tpb_wait. Si cette valeur est atteinte sans libération du verrou, une erreur est rapportée).
323311
324312### Firebird et les transactions ISO
325313
326-Les niveaux de transaction de Firebird ne correspondent pas univoquement aux niveaux de transaction ISO/ANSI. Une approximation est :
314+Les niveaux de transaction de Firebird ne correspondent pas univoquement aux niveaux de transaction ISO/ANSI. Une approximation est :
327315
328-- ISO Read Committed=READ COMMITTED+RECORD_VERSION
329-- ISO Read Committed=READ COMMITTED+NO RECORD_VERSION
330-- ISO Repeatable Read=SNAPSHOT (aussi connu comme CONCURRENCY)
331-- ISO Serializable=SNAPSHOT TABLE STABILITY (aussi connu comme CONSISTENCY)
316+ * ISO Read Committed=READ COMMITTED+RECORD_VERSION
317+ * ISO Read Committed=READ COMMITTED+NO RECORD_VERSION
318+ * ISO Repeatable Read=SNAPSHOT (aussi connu comme CONCURRENCY)
319+ * ISO Serializable=SNAPSHOT TABLE STABILITY (aussi connu comme CONSISTENCY)
332320
333321### Combinaisons habituelles
334322
335-Read committed par défaut (probablement, à contrôler).
323+Read committed par défaut (probablement, à contrôler).
336324
337325#### Insertion Batch/bulk
338326
339-isc_tpb_read_committed et isc_tpb_no_rec_version pourrait être une bonne combinaison : il permet à d'autres transactions de fonctionner quand un batch se déroule.
327+isc_tpb_read_committed et isc_tpb_no_rec_version pourrait être une bonne combinaison : il permet à d'autres transactions de fonctionner quand un batch se déroule.
340328
341329#### Transaction en lecture seule
342330
343-Si vous voulez avoir seulement un accès en lecture à la base de données, vous pouvez le faire en réglant les paramètres de transaction :
331+Si vous voulez avoir seulement un accès en lecture à la base de données, vous pouvez le faire en réglant les paramètres de transaction :
344332
345-- `isc_tpb_read`
346-- `isc_tpb_read_committed`
347-- `isc_tpb_rec_version`
348-- `nowait`
333+ * `isc_tpb_read`
334+ * `isc_tpb_read_committed`
335+ * `isc_tpb_rec_version`
336+ * `nowait`
349337
350-Cette combinaison ne bloquera pas le ramasse-miette, ce qui est une bonne chose. Source: [4](http://tech.groups.yahoo.com/group/firebird-support/message/118748)
338+Cette combinaison ne bloquera pas le ramasse-miette, ce qui est une bonne chose. Source: [[4]](<http://tech.groups.yahoo.com/group/firebird-support/message/118748>)
351339
352-> **Note:** La [FAQ Firebird](http://www.firebirdfaq.org/faq164/) indique que vos aurez besoin d'un accès en écriture à la base de données même si vous voulez seulement y lire dedans, à moins que vous ne mettiez le drapeau read-only de base de données (e.g. en utilisant gfix)
340+![Light bulb](https://upload.wikimedia.org/wikipedia/commons/d/d8/Nuvola_apps_ktip.png) **Remarque:** La [FAQ Firebird](<http://www.firebirdfaq.org/faq164/>) indique que vos aurez besoin d'un accès en écriture à la base de données même si vous voulez seulement y lire dedans, à moins que vous ne mettiez le drapeau read-only de base de données (e.g. en utilisant gfix)
353341
354342## Liens et plus d'informations
355343
356-La liste du dessous montre des liens vers plus d'information sur Firebird et les outils associés.
344+La liste du dessous montre des liens vers plus d'information sur Firebird et les outils associés.
357345
358-- [[Firebird embedded|Utilisation de Firebird incorporé avec FPC/Lazarus]]
346+ * [[Firebird embedded|Utilisation de Firebird incorporé avec FPC/Lazarus]]
359347
360348### Echantillons Lazarus Firebird
361349
362-- Code source pour une application exemple Lazarus/Firebird [5](http://lazarus.freepascal.org/index.php/topic,13940.msg73617.html#msg73617)
363-- Tutoriels Firebird/SQLDB :
364- - [[SQLdb Tutorial0/fr|SQLdb Tutoriel 0]]
365- - [[SQLdb Tutorial0/fr|SQLdb Tutoriel 1]]
366- - [[SQLdb Tutorial0/fr|SQLdb Tutoriel 2]]
367- - [[SQLdb Tutorial0/fr|SQLdb Tutoriel 3]]
368- - [[SQLdb Tutorial0/fr|SQLdb Tutoriel 4]]
350+ * Code source pour une application exemple Lazarus/Firebird [[5]](<http://lazarus.freepascal.org/index.php/topic,13940.msg73617.html#msg73617>)
351+ * Tutoriels Firebird/SQLDB :
352+ * [[SQLdb Tutorial0/fr|SQLdb Tutoriel 0]]
353+ * [[SQLdb Tutorial0/fr|SQLdb Tutoriel 1]]
354+ * [[SQLdb Tutorial0/fr|SQLdb Tutoriel 2]]
355+ * [[SQLdb Tutorial0/fr|SQLdb Tutoriel 3]]
356+ * [[SQLdb Tutorial0/fr|SQLdb Tutoriel 4]]
369357
370-- Tutoriels PP4S ; couvre aussi bien l'installation de Firebird sous Windows :
371- - [Planification d'une base de données](http://www.pp4s.co.uk/main/tu-db-plan.html)
372- - [Installation de Firebird](http://www.pp4s.co.uk/main/tu-db-installingfirebird01.html)
373- - [Création d'une base de données Firebird](http://www.pp4s.co.uk/main/tu-db-firebird-create.html)
374- - [Edition d'une base de données Firebird](http://www.pp4s.co.uk/main/tu-db-firebird-demo1.html)
375- - [Recherche dans une base de données Firebird](http://www.pp4s.co.uk/main/tu-db-firebird-demo2.html)
376- - [Création et impression d'un rapport](http://www.pp4s.co.uk/main/tu-db-firebird-demo3.html)
377- - [Création et utilisation de procédures stockées](http://www.pp4s.co.uk/main/tu-db-firebird-demo4.html)
358+ * Tutoriels PP4S ; couvre aussi bien l'installation de Firebird sous Windows :
359+ * [Planification d'une base de données](<http://www.pp4s.co.uk/main/tu-db-plan.html>)
360+ * [Installation de Firebird](<http://www.pp4s.co.uk/main/tu-db-installingfirebird01.html>)
361+ * [Création d'une base de données Firebird](<http://www.pp4s.co.uk/main/tu-db-firebird-create.html>)
362+ * [Edition d'une base de données Firebird](<http://www.pp4s.co.uk/main/tu-db-firebird-demo1.html>)
363+ * [Recherche dans une base de données Firebird](<http://www.pp4s.co.uk/main/tu-db-firebird-demo2.html>)
364+ * [Création et impression d'un rapport](<http://www.pp4s.co.uk/main/tu-db-firebird-demo3.html>)
365+ * [Création et utilisation de procédures stockées](<http://www.pp4s.co.uk/main/tu-db-firebird-demo4.html>)
378366
379367### Outils
380368
381-- FlameRobin [Flamerobin site](http://www.flamerobin.org/) Outil avec IHM en Open Source pour gérer Firebird, disponible pour Linux, Windows et Mac OSX. Hautement recommandé.
382-- Turbobird [Site Turbobird](https://github.com/motaz/turbobird) Outil avec IHM en Open Source pour gérer Firebird. Ecrit avec Lazarus et utilisant TIBConnection.
383-- ibconsole : Outil pour gérer des bases de données Firebird et Interbase avec une IHM, disponible pour Windows et Linux.
384-- Lazarus Data Desktop - inclus dans le référentiel de Lazarus (trouvé dans le répertoire 'tools/lazdatadesktop/').
385-- [LazSQLX](http://lazsqlx.wordpress.com/) Outil de gestion Multi base de données en Open Source. Ecrit avec Lazarus en utilisant à la fois les composants SQLDB et Zeos. Inclut la prise en charge de Firebird.
386-- tiSQLEditor - Inclus dans le répertoire "Support Apps" du référentiel [[tiOPF/fr|tiOPF]]. C'est un outil utilisé pour écrire du SQL avec un petite prise en charge de la complétion de code, peut exécuter des scripts, exécuter des scripts pour des applications d'une version à une autre plus récente, a des fonctions pratique de copier/coller pour les applications en Pascal Objet, a de nombreuses fonctions utiles pour tiOPF (crée des patrons de code Pascal Objet depuis les résultats de requêtes, pour les classes visiteurs de tiOPF), exporte les résultats de requête vers le CSV etc.
369+ * FlameRobin [Flamerobin site](<http://www.flamerobin.org/>) Outil avec IHM en Open Source pour gérer Firebird, disponible pour Linux, Windows et Mac OSX. Hautement recommandé.
370+ * Turbobird [Site Turbobird](<https://github.com/motaz/turbobird>) Outil avec IHM en Open Source pour gérer Firebird. Ecrit avec Lazarus et utilisant TIBConnection.
371+ * ibconsole : Outil pour gérer des bases de données Firebird et Interbase avec une IHM, disponible pour Windows et Linux.
372+ * Lazarus Data Desktop - inclus dans le référentiel de Lazarus (trouvé dans le répertoire 'tools/lazdatadesktop/').
373+ * [LazSQLX](<http://lazsqlx.wordpress.com/>) Outil de gestion Multi base de données en Open Source. Ecrit avec Lazarus en utilisant à la fois les composants SQLDB et Zeos. Inclut la prise en charge de Firebird.
374+ * tiSQLEditor - Inclus dans le répertoire "Support Apps" du référentiel [[tiOPF/fr|tiOPF]]. C'est un outil utilisé pour écrire du SQL avec un petite prise en charge de la complétion de code, peut exécuter des scripts, exécuter des scripts pour des applications d'une version à une autre plus récente, a des fonctions pratique de copier/coller pour les applications en Pascal Objet, a de nombreuses fonctions utiles pour tiOPF (crée des patrons de code Pascal Objet depuis les résultats de requêtes, pour les classes visiteurs de tiOPF), exporte les résultats de requête vers le CSV etc.
387375
388376### Firebird
389377
390-- Le SGBDR Firebird [site de Firebird](http://firebirdsql.org/). Ce site contient aussi beaucoup de documentation sur Firebird.
391-- FAQ Firebird [6](http://firebirdfaq.org/). Site pratique qui montre p.ex. les différences avec les autres SGBDR.
378+ * Le SGBDR Firebird [site de Firebird](<http://firebirdsql.org/>). Ce site contient aussi beaucoup de documentation sur Firebird.
379+ * FAQ Firebird [[6]](<http://firebirdfaq.org/>). Site pratique qui montre p.ex. les différences avec les autres SGBDR.
392380
393381---
394-*From the Free Pascal wiki, page "Firebird/fr", as it stood on 2020-02-15 after a change by Trev, 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).*
382+*From the Free Pascal wiki, page "Firebird/fr", as the Internet Archive kept it on 2025-03-15, last changed on 2020-02-16. 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