Sign in Join
Wiki copytemporary

Databases/fr: what changed

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

OldNewLine
11Cette page est une introduction sur le sujet '[[Lazarus Faq/fr|Lazarus]] et les **bases de données**'. La table suivante donne une vue d'ensemble des bases de données supportées.
22
33Cela ne concerne que les composants de base de données pour lesquels les bibliothèques clientes sont installées (si la base de données nécessite des bibliothèques clientes), sinon Lazarus pourrait échouer à démarrer par manque de fichier. Puis Lazarus doit être réinstallé car la désinstallation du composant n'est pas possible.
44
55# Base de données supportées
66
77| Base de données | Nom du paquet | Nécessite une bibliothèque client ? | Nécessite un serveur ? | Versions supportées | Plates-formes supportées |
88|----|----|----|----|----|----|
99| [**Advantage**](http://www.advantagedatabase.com/) | TAdsDataSet | Oui | Non | 10.1 et supérieur | i386: Linux, Win32 |
1010| **DBase** | [[Lazarus Tdbf Tutorial/fr|DBFLaz]] | Non | Non | III+, IV, VII | Toutes |
1111| **En mémoire** | [[How to write in-memory database applications in Lazarus/FPC/fr|memds]] | Non | Non | \- | Toutes |
1212| **En mémoire** | [[How to write in-memory database applications in Lazarus/FPC/fr|bufdataset]] | Non | Non | \- | Toutes |
1313| [**Firebird**](http://www.firebirdsql.org/) | [[Firebird/fr|SQLdb]] | Oui | Selon <sup>1</sup> | 1 - 2.5 | i386: Linux, Win32 |
1414| **(Visual) FoxPro** | [[Lazarus Tdbf Tutorial/fr|DBFLaz]] | Non | Non | 2.0, 2.5, 3.0 (pas complétement) | Toutes |
1515| [**Interbase**](http://www.embarcadero.com/products/interbase-smp) | [[Firebird/fr|SQLdb]] | Oui | Oui | 4 - 6 | i386: Linux, Win32 |
1616| [**Microsoft SQL Server**](http://www.microsoft.com/sqlserver/) | [[mssqlconn/fr|SQLdb]] | Oui | Oui | 6- | FPC 2.6.2+. Linux, macOS, Win32, probablement *BSD, probablement Solaris<sup>2</sup> |
1717| [**MySQL**](http://www.mysql.com/) | [[MySQLDatabases/fr|SQLdb]] | Oui | Oui | 3.0 - 5.5 | i386: Linux, Win32 |
1818| **ODBC** | [[ODBCConn/fr|SQLdb]] | Oui | Selon | 3.x <sup>3</sup> | i386: Linux, Win32 |
1919| [**Oracle**](http://www.oracle.com/) | [[Oracle/fr|SQLdb]] | Oui | Oui | \- | \- |
2020| **Paradox** | [[TParadoxDataSet/fr|TParadoxDataSet]] | Non | Non | jusqu'à la version de table 7 (et au dessus ??) | Toutes |
2121| **Paradox** | [[TParadox/fr|TParadox]] | Oui | Non | | Win32 |
2222| [**PostgreSQL**](http://www.postgresql.org/) | [[postgres/fr|SQLdb]] | Oui | Oui | 6.6 - 8 | i386: Linux, Win32 |
2323| [**Sybase Adaptive Server Enterprise (ASE)**](http://www.sybase.com/products/databasemanagement/adaptiveserverenterprise) | [[mssqlconn/fr|SQLdb]] | Oui | Oui | Certain | Linux, macOS, Win32, probablement *BSD, probablement Solaris<sup>2</sup> |
2424| [**SQLite**](http://www.sqlite.org/) | [[SQLite/fr|SQLdb]] | Oui | Non | sqlite3 | Toutes |
2525| **Text files** | sdf | Non | Non | \- | Toutes |
2626
2727[[Databases|Note (1):]] Vous pouvez utiliser une version embarquée de Firebird sous Windows et Linux (potentiellement sous Mac OS X aussi), ou vous pouvez vous connecter à un serveur Firebird s'exécutant sous Windows/Unix/macOS/FreeBSD/ou autre plate-forme supportée par Firebird.
2828
2929[[Databases|Note (2):]] Ces connecteurs utilisent la bibliothèque FreeTDS comme un pilote. La documentation de FreeTDS indique qu'elle se construirait au moins sur ces paltes-formes. Les versions pour Windows x86 et x64 peuvent être téléchargées depuis p.ex. [1](ftp://ftp.freepascal.org/fpc/contrib/windows/dblib_x32.zip) et <ftp://ftp.freepascal.org/fpc/contrib/windows/dblib_x64.zip>\].
3030
3131[[Databases|Note (3):]] Ce numéro de version se réfère au standard ODBC, et non pas au numéro de version d'un pilote ou d'un gestionnaire de pilote. Il y a des pilotes ODBC 3.x pour la plupart des SGBDRs.
3232
3333# Les liaisons aux clients de base de données
3434
3535Si vous voulez utiliser une des bases de données qui demande des bibliothèques clientes, celles-ci doivent être installées. Non seulement sur l'ordinateur avec lequel vous développez mais aussi sur celui où l'application devra tourner. Remarquez que certaines bases de données (en particulier MySQL) tourne seulement si les liaisons qui sont compilées dans l'application sont de la même version que celles des bibliothèques installées. Vous pouvez trouver comment installer ces bibliothèques (fichiers .so sur les systèmes *nix et des .dll sur Windows) dans le site web des développeurs de la base de données. Les unités de liaison peuvent être trouvées dans le dossier packages/base dans les sources de FPC. Elles consistent fondamentalement en appels d'API clientes comme mysql_connect_database, qui diffèrent complètement d'un SGBD à un autre. Il est possible d'écrire des applications en utilisant ces unités, mais cela donne plus de travail et est plus générateur de bugs que d'employer les composants DB de Lazarus.
3636
3737La plupart de ces paquets de liaisons sont liés en dur aux bibliothèques clientes. Ceci signifie que si votre application est compilée avec l'une des unités en elle, l'application entière ne peut être liée (au sens de l'édition de liens) si les bibliothèques clientes ne sont pas disponibles sur la station de travail. Cela signifie que votre programme ne sera pas généré si vous n'avez pas installé - p.ex. - un client MySQL sur votre ordinateur, et vous utilisez l'unité mysql4.pp dans votre programme. Si vous compilez avec succès le programme sur un ordinateur qui a les bibliothèques MySQL installées, il ne démarrera pas sur une autre machine qui n'a pas les bibliothèques MySQL adéquates. En d'autres mots : pour ces SGBD, vous devez installer les bibliothèques clientes sur votre machine de développement et vous devrez installer ces bibliothèques clientes avec votre application (NdT: attention aux termes des licences).
3838
3939Pour éviter de tels problèmes, certains de ces paquets sont aussi capables d'être liés dynamiquement aux bibliothèques. Avant que tout appel à ces bibliothèques puissent être réalisé, l'unité doit être 'initialisée'. Cette initialisation échoue si le client de base de données n'est pas installé sur l'ordinateur. Si le programme est prêt en utilisant la bibliothèque cliente, l'unité doit être 'délivrée' (*released*).
4040
4141# Datasets
4242
4343L'utilisation de base de données dans Lazarus (ou Free Pascal) est fondamentalement basé sur la classe [[TDataSet/fr|TDataSet]]. Ceci représente une table ou une requête de votre application. Toutefois, comme d'autres classes fondamentales, vous n'utiliserez pas la classe TDataSet elle-même, vous utiliserez un de ses descendants. Il y en a un certain nombre. Ils fournissent un accès à différentes bases de données, telles que dbase local ou des fichiers texte, ou des bases de données back-end telles que PostgreSQL, Firebird, MySQL et ainsi de suite. Certains descendants de DataSet relient directement aux tables de la base, alors que d'autres utilisent des composants additionnels ou des bibliothèques pour réaliser le lien.
4444
4545Les descendants de TDataSet, étant des composants non visuels, sont généralement des composants de la Bibliothèque de Composants libres (*Free Component Library* ou FCL) plutôt que des composants de la bibliothèque de composant de Lazarus (*Lazarus Component Library* ou LCL).
4646
4747Les DataSet peuvent être employés à la fois par programmation et avec les contrôles visuels. Une application de base de données typique utilisera souvent les deux méthodes. Dans tous les cas, la première étape est de créer le descendant de TDataSet, l'initialiser en le connectant à la table ou la requête que vous souhaitez et l'ouvrir. Cela peut être fait soit par code à l'exécution soit en posant le composant sur la fiche et en définissant ses propriétés au moment de la conception. Les détails de ceci varient considérablement selon les différents descendants de TDataSet, donc allez voir les divers guides sous [[Databases/fr|Base de données]] pour ce qui est à faire pour votre SGBD.
4848
4949Quand un DataSet est ouvert, un ensemble de composants champs est créé, un par champ ou colonne de la table ou requête que vous avez ouverte. Chaque composant champ est un descendant de la classe TField, adapté au type du champ, p.ex., TstringField.
5050
5151## Utilisation de TDataSets par code
5252
5353L'accès par programmation sera expliqué dans plus de détails dans [[Using Dataset and Field components/fr|Utilisation de composants DataSet et TField]], mais en guise de simple survol :
5454
5555- Utilisez les descendants de TDataSet pour ouvrir la table ou la requête, filtrer les lignes que vous voulez voir, et déplacez vous de ligne en ligne.
5656- Utilisez les descendants de TField pour :
5757 - Accéder aux informations générales sur les champs.
5858 - accéder aux valeurs spécifiques pour la ligen courante. (utilisez la proporiété As..., telle que AsString, AsInteger, etc.)
5959- Accéder aux champs d'un descendant de TDataSet en utilisant soit :
6060 - La propriété Fields, p.ex. Fields\[0\] est le premier champ,
6161 - La méthode FieldByName, p.ex. FieldByName('AGE') retourne le champ associé avec le champ de base de données appelé 'AGE'.
6262
6363Voir [[Database field type/fr|Type de champs de base de données]] pour une liste des types de champ.
6464
6565## Utilisation des contrôles visuels (sensibles aux données)
6666
6767Pour utiliser des bases de données dans une simple application de type "RAD", vous pouvez généralement configuerer le descendant de TDataSet en conception et employer des contrôles sensibles aux données. Pour faire ceci :
6868
6969- Ajouter les descendant de TDataSet pour la base de données de votre choix, ainsi que tous lescomposants sur votre fiche,et ouvrez-le (Définissez la propriété 'Active' à true).
7070- Ajouter un composant [[TDataSource/fr|TDataSource]] (depuis l'onglet [[Data Access tab/fr|Data Access]] à la fiche et liez-le au DataSet (définissez la propriété).
7171- Ajoutez des contrôles sensibles aux données depuis l'onglet [[Data Controls tab/fr|Data Controls]] à la fiche et liez-les chacun au composant DataSource (et non pas au DataSet).
7272- La plupart des contrôles sont reliés à un seul champ, vous devez donc définir le champ pour chaque contrôle.
7373
7474Voir #Contrôles de données plus bas pour plus de détails sur les contrôles.
7575
7676## Etat de Dataset
7777
7878Les DataSets peuvent dans un certain nombre d'états, plutôt peu nombreux (jetez un oeil à TDataSetState dans les sources), les principaux dont il faut tenir compte sont :
7979
8080| Etat | Fonction |
8181|----|----|
8282| dsInactive | Le dataset est fermé. |
8383| dsBrowse | L'utilisateur peut parcourir les données dans le DataSet. |
8484| dsEdit | L'utilisateur peut éditer les valeurs de la ligne courante. Les valeurs ne sont enregistrées qu'après l'appel à Post sur le DataSet. |
8585| dsInsert | Une nouvelle ligne est ajoutée et l'utilisateur peut en définir les valeurs. L'enregistrement n'est pas réalisés avant l'appel à Post. |
8686
8787Les autres états sont clairement transitoires et sont généralement géré "automatiquement". Ils sont utilisés en interne et dans du code plus compliqué. Si votre base de données visualise seulement les données et que vous ouvrez le DataSet lors de la conception, vous pouvez largement ignorer l'état, qui sera la plupart du temps dsBrowse. Néanmoins, le plupart des applications voudront changer les données à certains moments. Si vous utilisez des contrôles sensibles aux données, ils traiteront beaucoup de cela automatiquement. Si vous changez le texte dans un contrôle [[TDBEdit/fr|TDBEdit]] p.ex., l'état du DataSet passera à dsEdit - à moins que vous ne soyez déjà dans un état dsEdit ou dsInsert. Si vous "défilez" vers un enregistrement différent alors que l'état courant est dsEdit ou dsInsert, cet enregistrement sera "posté" et le DataSet reviendra à l'état dsBrowse. Toutefois, si vous accédez à l'ensemble de données à partir du code, vous devrez souvent modifier l'état dans le code ainsi. Le contrôle [[TDBNavigator/fr|TDBNavigator]] (voir plus bas) permet à l'utilisateur de changer explicitement l'état.
8888
8989## Méthode de TDataset UpdateStatus
9090
9191UpdateStatus détermine l'état courant du tampon d'enregistrement, si les mises à jour n'ont pas été appliquées à la base de données.
9292
9393**Exemple** de comment détecter si ApplyUpdates insérera, mettra à jour ou supprimera la donnée :
9494
9595``` pascal
9696procedure QueryAfterPost(DataSet: TDataSet);
9797begin
9898 case DataSet.UpdateStatus of
9999 usUnmodified : ShowMessage('Unmodified');
100100 usModified : ShowMessage('Modified');
101101 usInserted : ShowMessage('Inserted');
102102 usDeleted : ShowMessage('Deleted');
103103 end;
104104end;
105105```
106106
107107Explication des valeurs
108108
109109- usUnmodified: l'enregistrement reste inchangé.
110110- usModified: L'enregistrement existe dans la base de données mais est localement supprimé.
111111- usInserted: L'enregistrement n'existe pas encore dans la base de données mais est localement inséré.
112112- usDeleted: L'enregistrement existe dans la base de données mais est localement supprimé.
113113
114114## Méthodes Post et Cancel
115115
116116Si vous avez modifié ou inséré un enregistrement, les nouvelles valeurs sont tenues dans un tampon.
117117
118118- L'appel à la méthode Cancel du DataSet efface le nouvel enregistrement (insertion) ou revient aux valeurs précédentes (édition).
119119- L'appel à la méthode Post du DataSet enregistre les valeurs (édition) ou l'enregistrement (insertion). Dans certains descendants de TDataSet, ils seront écrits directement dans la base de données, alors que dans d'autres ils seront stockés dans une liste de mises à jour jusqu'à ce qu'un appel ultérieur soit fait pour enregistrer tous les changements dans la base de données. Au final, même quand ils sont écrits dans la base de données, vous devrez faire appel à la méthode "Commit" pour que la base de données les écrive de manière permanente. Tout cela dépend considérablement avec le descendant de TDataSet, il faut donc consulter les détails sur celui que vous utilisez.
120120
121121## Insertion d'un nouvel enregistrement
122122
123123Pour insérer un nouvel enregistrement, dans un descendant de TDataSet, on devrait utiliser la méthode [Insert](http://www.freepascal.org/docs-html/fcl/db/tdataset.insert.html). Après avoir défini la valeur des champs, il faut appeler finalement la méthode Post pour faire le Commit du nouvel enregistrement, comme l'exemple du bas le montre.
124124
125125L'exemple montre aussi commment insérer de la donnée BLOB depuis un fichier - vous pouvez aussi utiliser la méthode LoadFromStream pour charger la donnée depuis un flux.
126126
127127``` pascal
128128 MyDataset.Insert;
129129 MyDataset.Fields[0].AsInteger := 4; //an integer field
130130 MyDataset.Fields[1].AsString := 'First Name'; //a string field
131131 TBlobField(MyDataset.Fields[2]).LoadFromFile('SomeBlobfile.bin'); //blob field
132132 MyDataset.Post;
133133```
134134
135135## Comment sauter rapidement vers une enregistrement particulier dans la table ?
136136
137137### Après sélection tous les enregistrements de la table
138138
139139Si vous utilisez SELECT * FROM pour sélectionner tous les enregistrements de la table et ensuite passer de l'un à l'autre, vous aurez à construire un index et chercher à partir de celui-ci. Il est plus efficace de sélectionner seulement les enregistrements dont vous avez besoin.
140140
141141### Sélection du seul enregistrement désiré
142142
143143Une solution rapide pour sauter à un enregistrement particulier est ne sélectionner que celui-ci, p.ex. en faisant :
144144
145145``` pascal
146146var
147147 MyDataset: TSQLQuery;
148148begin
149149 //...
150150 MyDataset.FieldDefs.Add('SessionId', ftLargeint);
151151 MyDataset.FieldDefs.Add('GameEvent', ftLargeint);
152152 MyDataset.FieldDefs.Add('TableId', ftInteger);
153153 MyDataset.FieldDefs.Add('LoggedIn', ftBoolean);
154154 MyDataset.FieldDefs.Add('PlayerId', ftInteger);
155155 MyDataset.Active := False;
156156 { Non-parameterized format; may run into issues with text containing ' and dates
157157 SQLText := Format('select * from "GameSession" WHERE "SessionId"=%d', [ASessionId]);
158158 }
159159 // Solution: parameterized query:
160160 // Actually, if this is done in a loop, you only need to set the SQL.Text once,
161161 // and only change the parameter value
162162 MyDataset.SQL.Text := 'select * from "GameSession" WHERE "SessionID"=:SessionID');
163163 MyDataSet.ParamByName('SessionID').AsLargeInt := ASessionID;
164164 try
165165 MyDataset.Active := True;
166166 except
167167 //...
168168 end;
169169```
170170
171171Vous pouvez alors lire l'informatation en utilisant quelque chose comme ceci :
172172
173173``` pascal
174174 lPlayerId := MyDataset.Fields[4].AsInteger;
175175```
176176
177177## Filtrage
178178
179179Vous pouvez filtrer votre DataSet pour limiter les enregistrements à un sous-ensemble que vous souhaitez (p.ex. tous les noms de famille commençant par Smith).
180180
181181- En utilisant .Filter:
182182 - [[TDbf/fr|TDbf]], [[TBufDataset/fr|TBufDataset]] et descendants (y compris [[TSQLQuery/fr|TSQLQuery]]) utilisent l'analyseur (*parser*) de filtrage de TDBF ; voir [[Lazarus Tdbf Tutorial/fr|Lazarus Tdbf Tutorial/fr#Expressions]] pour les détails d'utilisation.
183183 - [[TMemDataset/fr|TMemDataset]] ne supporte pas .Filter
184184- En utilisant un événement/procédure de rappel (*callback procedure*) avec OnFilter, vous pouvez définir votre propre fonction de filtre.
185185
186186## Méthodes Locate/lookup
187187
188188Bien que plus souvent utilisé dans les DataSets non-SQL (comme [[TParadoxDataSet/fr|TParadoxDataSet]], [[TDbf/fr|TDbf]]), vous pouvez sauter entre les enregistrements en utilisant [[locate/fr|locate]]/[[lookup/fr|lookup]].
189189
190190## En utilisant TSQLQuery
191191
192192Pour plus d'information sur [[TSQLQuery/fr|TSQLQuery]] voir [[Working With TSQLQuery/fr|Travailler avec TSQLQuery]].
193193
194194## Exportation
195195
196196FPC/Lazarus contient des fonctionnalités pour exporter des ensembles de données selon des formats divers ; voir p.ex. :
197197
198198- [[fpXMLXSDExport/fr|fpXMLXSDExport]].
199199- [[fpdbfexport/fr|fpdbfexport]].
200200- Les autres composants dans le paquet [[lazdbexport/fr|export de base de données]].
201201
202202Bien sûr, vous pouvez aussi faire cela manuellement (voir p.ex. [[FPSpreadsheet/fr|FPSpreadsheet/fr#Conversion_d.27une_base_de_donn.C3.A9es_vers_une_feuille_de_calcul]] pour exporter vers le format Excel en utilisant fpspreadsheet).
203203
204204# Contrôles de données
205205
206206Pour utiliser n'importe quel de ces contrôles, ajoutez le contrôle à la fiche et définissez au moins sa propriété DataSource. D'autres propriétés clé seront notées.
207207
208208## Contrôle Datasource
209209
210210Ce contrôle garde la trace de l'enregistrement vers lequel sont actuellement reliés les contrôles. Le contrôle DataSource doit être relié à un DataSet (p.exe un TSQlQuery).
211211
212212## Contrôles à champ unique
213213
214214Ces contrôles s'attachent tous à un simple champ.
215215
216216These controls all attach to a single field. En plus de la propriété DataSource, définissez le nom du champ. Les contrôles incluent :
217217
218218- [[doc:lcl/dbctrls/tdbtext.html|Contrôle DBText]] Affiche un champ texte (en lecture seule, pas de bordure).
219219- [[doc:lcl/dbctrls/tdbedit.html|Contrôle DBEdit]] Affiche/édite un champ texte dans une zone d'édition.
220220- [[doc:lcl/dbctrls/tdbmemo.html|Contrôle DBMemo]] Affiche/édite un champ texte dans une zone d'édition multiligne.
221221- [[doc:lcl/dbctrls/tdbimage.html|Contrôle DBImage]] Affiche une image stockée dans la bse de données sous forme d'un BLOB. Remarquez : par défaut, Lazarus stocke un entête avec le type de l'image avant la donnée d'image dans le champ BLOB de base de données. Cela est différent de Delphi. Néanmoins, vous pouvez rendre TDBImage compatible avec Delphi : voir [[Lazarus For Delphi Users|Lazarus For Delphi Users#TDBImage]]
222222- [[doc:lcl/dbctrls/tdblistbox.html|Contrôle DBListBox]] et [[doc:lcl/dbctrls/tdbcombobox.html|contrôle DBComboBox]] permettent à l'utilisateur d'insérer des valeurs dans un champ de base de données depuis une liste de valeurs dans la propriété Items des contrôles.
223223- [[doc:lcl/dbctrls/tdblookuplistbox.html|Contrôle DBLookupListBox]] et [[doc:lcl/dbctrls/tdblookupcombobox.html|contrôle DBLookupComboBox]], voir aussi [[TDBLookupComboBox/fr|TDBLookupComboBox]] permettent à l'utilisateur d'insérer des valeurs dans un champ de base de données en affichant le contenu d'un champ de référence d'une autre table. Bien que ces contrôles stockent leurs résultats dans un seul champ, vous aurez besoin d'un autre champ pour les valeurs de référence. **Note** : au moins pour DBLookupComboBox, il y a un bug dans FPC 2.6.0 qui demande à ce que le listfield soit présente aussi bien dans la DataSource, vous pouvez contourner ça en déclarant un champ calculé avec le même nom que la listfield dans le DataSet de la DataSource, qui ne fera rien.
224224- [[doc:lcl/dbctrls/tdbcheckbox.html|Contrôle DBCheckBox]] Affiche/modifie un champ booléen en vérifiant/effaçant une case à cocher.
225225- [[doc:lcl/dbctrls/tdbradiogroup.html|Contrôle DBRadioGroup]] Affiche les articles dans un contrôle RadioGroup normal, lecture/écriture de la valeur du champ depuis une liste de valeurs correspondantes.
226226- [[doc:lcl/dbctrls/tdbcalendar.html|Contrôle DBCalendar]] Affiche/édite un champ date en utilisant un panneau calendrier.
227227- [[doc:lcl/dbctrls/tdbgroupbox.html|Contrôle DBGroupBox]]
228228
229229## [[doc:lcl/dbgrids/tdbgrid.html|Contrôle DBGrid]]
230230
231231Ce contrôle peut montrer un nombre de champs dans une disposition ligne/colonne - en fait par défaut, il montre tout. Néanmoins vous pouvez mettre des entrées dans la [[doc:lcl/dbgrids/tdbgrid.columns.html|collections des colonnes]] pour restreindre à des champs spécifiques et définir les largeurs et titres de chaque colonne.
232232
233233En plus de la [[doc:lcl/dbgrids/tdbgrid.html|documentation mentionnée]], d'autres détails peuvent être trouvés là [[Grids Reference Page|Grids Reference Page#TCustomDBGrid]].
234234
235235## [Contrôle Navigateur](http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbnavigator.html)
236236
237237Ce contrôle donne à l'utilisateur certaines actions directes sur le DataSet, il permet à l'utilisateur de :
238238
239239- se déplacer vers l'enregistrement suivant ou précédent, ou vers le début ou la fin des enregistrements.
240240- Ajouter un nouvel enregistrement (équivalent à l'appel de la méthode dataset.insert).
241241- Mettre l'enregistrement en mode édition.
242242- Supprimer un enregistrement.
243243- Valider (*Post*) ou annuler (*Cancel*) les changements en cours.
244244- Rafraîchir la donnée (utile dans des applications multi-utilisateurs)
245245
246246Propriétés clés :
247247
248248- VisibleButtons : Limite aux actions que l'utilisateurs peut faire. P.ex., si la suppression n'est pas permise, cachez le bouton Delete. Si vous avez un DBGrid, attaché au même DataSet, vous pouvez vous passer des boutons Next et Prior.
249249- Width : Si vous ne montrez pas tous les boutons, vous pouvez définir la propriété Width à (height*nombre_de_boutons_visibles).
250250
251251# Exécution de tests de bases de données de FPC
252252
253253Les composants de base de données Free Pascal intègrent un framework orienté test [[fpcunit/fr|fpcunit]], dbtestframework, qui peut être utlisé pour vérifier des fonctionnalités. Voir le répertoire source\packages\fcl-db\tests\\ dans l'arborescence des sources FPC.
254254
255255Included est un framework de test qui peut être exécuté sur des composants de base de données divers, aussi bien que sur d'autres tests (p.ex. le test d'un export de données).
256256
257257Pour exécuter un framework de test sur une certaine base de données :
258258
2592591\. enregistrer source\packages\fcl-db\tests\database.ini.txt sous source\packages\fcl-db\tests\database.ini
260260
2612612\. Modifier source\packages\fcl-db\tests\database.ini pour choisir quelle base de données vous utiliserez.
262262
263263Exemple pour Interbase/Firebird:
264264
265265``` ini
266266[Database]
267267type=interbase
268268```
269269
2702703\. Dans le même fichier, personnalisez les réglages de votre base de données. P.ex. si vous avez choisi interbase avant :
271271
272272``` ini
273273[interbase]
274274connector=sql
275275connectorparams=interbase
276276; Database name/path (note: database needs to exist already)
277277; You can use aliases (see aliases.conf in your Firebird documentation)
278278name=testdb
279279user=sysdba
280280password=masterkey
281281; your hostname may very well differ:
282282; Leave blank if you want to use an embedded Firebird database
283283hostname=192.168.0.42
284284```
285285
2862864\. Compilez et exécutez source\packages\fcl-db\tests\dbtestframework.pas (vous pouvez aussi utiliser Lazarus pour compiler et exécuter la version en IHM, dbtestframework_gui). Si vous utilisez une base de données incorporée sur Windows (p.ex. Firebird incorporé ou sqlite), copiez d'abord les fichiers DLL dans le dossier. La sortie sera au format XML (ou affiché sur votre écran si vous utilisez dbtestframework_gui).
287287
288288Veuillez vous reporter au fichier source\packages\fcl-db\tests\README.txt pour plus de détails.
289289
290290# Paquets Bases de données contenus dans Lazarus
291291
292292## sqldblaz.lpk
293293
294294![](/wiki-images/c/c5/Sqldbcomponents.png%E2%80%8E)
295295
296296Ce paquet fournit l'accès à différentes bases de données. Ce qui inclut :
297297
298298- Interbase/Firebird
299299- Microsoft SQL Server (sauf pour Lazarus/FPC x64 pour Windows)
300300- MySQL
301301- Oracle (sauf pour Lazarus/FPC x64 pour Windows)
302302- PostgreSQL (sauf pour Lazarus/FPC x64 pour Windows)
303303- SQLite (avec le support de l'extension [[Spatialite/fr|Spatialite]])
304304- Sybase ASE (Adaptive Server Enterprise - à ne pas confondre avec Sybase ASA) (sauf pour Lazarus/FPC x64 pour Windows)
305305- Toute base de données disposant d'un pilote ODBC.
306306
307307Les composants (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMSSQLConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection, TSybaseConnection) se trouvent dans l'onglet 'SQLdb' de la palette de composants.
308308
309309- [[SQLdb Package/fr|SQLdb Package]]
310310
311311## dbflaz.lpk
312312
313313Ce paquet fournit l'accès aux bases de données DBase et FoxPro. Vous pouvez obtenir plus d'information dans le [[Lazarus Tdbf Tutorial/fr|tutoriel Lazarus TDbf]]. Le composant TDbf est sur l'onglet [[Data Access tab/fr|Data Access]] dans la palette de composants.
314314
315315## sqlitelaz.lpk
316316
317317Ce paquet fournit l'accès aux bases de données SQLite. Vous pouvez obtenir plus d'information dans la [[Lazarus Database Overview/fr|vue d'ensemble des base de données de Lazarus]].
318318
319319## sdflaz.lpk
320320
321321Le composant [[TSdfDataSet/fr|TSdfDataSet]] se trouve dans l'onglet [[Data Access tab/fr|Data Access]] dans la palette de composants.
322322
323323## lazreport.lpk
324324
325325Le site du générateur d'état est [<http://lazreport.sourceforge.net/>](http://lazreport.sourceforge.net/). Plus d'information peut être trouvée [[Projects using Lazarus|là]]. LazReport dépend du paquet Printer4Lazarus. Avec la révision 11950, LazReport a été intégré dans le référentiel SVN de Lazarus.
326326
327327## lazdbexport.lpk
328328
329329Voir [[lazdbexport/fr|lazdbexport]].
330330
331331# Paquets externes / bibliothèques
332332
333333## Objets Zeos DataBase
334334
335335Ces composants fournissent l'accès à différentes bases de données. Vous pouvez trouver plus d'information [[ZeosDBO/fr|là]]. Ce Wiki contient aussi un [[Zeos tutorial/fr|tutoriel Zeos]].
336336
337337## Pascal Data Objects
338338
339339C'est maintenant une alternative. Elle supporte :
340340
341341- MySQL 4.1 et 5.0
342342- sqlite-2 et sqlite-3
343343- pgsql-8.1
344344- interbase-5, interbase-6, firebird-1.0, firebird-1.5, firebird-1.5E, firebird-2.0, firebird-2.0E
345345- mssql (Microsoft library) et sybase (FreeTDS library)
346346- oracle
347347
348348Comme les instructions préparées, la liaison et les procédures stockées sont supportées par l'API de base de données appelée Pascal Data Objects, qui est inspirée de PHP Data Objects. Toute la documentation et tout le code nécessaire pour utiliser cette nouvelle API est disponible sur SourceForge :
349349
350-[`http://pdo.sourceforge.net`](http://pdo.sourceforge.net)
350+```text
351+http://pdo.sourceforge.net
352+```
351353
352354## TPSQL
353355
354356Ces composants fournissent l'accès via TCP/IP aux bases de données PostgreSQL. Vous pooiuvez trouver plus d'informations dans [[TPSQL/fr|cette page]].
355357
356358## FIBL
357359
358360Ces composants fournissent l'accès aux bases de données Interbase et Firebird. La page d'accueil est [<http://sourceforge.net/projects/fibl>](http://sourceforge.net/projects/fibl).
359361
360362## IBX
361363
362364IBX pour Lazarus sont des composants pour accéder aux bases de données Firebird : voir [[IBX/fr|IBX]].
363365
364366## Bibliothèque FBLib Firebird
365367
366368[FBLib](http://fblib.altervista.org/) est une bibliothèque Open Source non sensible aux données pour l'accès direct à Firebird depuis Borland Delphi/Kylix, Free Pascal et Lazarus.
367369
368370Les caractéristiques actuelles intègrent :
369371
370372- L'accès direct à Firebird 1.0.x, 1.5.x et 2.x Classic ou SuperServer.
371373- Multi plate-forme (Win32,Gnu/Linux,FreeBSD).
372374- La sélection automatique de la bibliothèque cliente 'fbclient' ou 'gds32'.
373375- Requêtes avec paramètres.
374376- Supporte les dialectes SQL 1/3.
375377- Agrément de licence LGPL.
376378- Extraction de métadonnées.
377379- Analyseur simple de script.
378380- Seulement 100-150 KB sont ajoutés dans l'EXE final.
379381- Supporte les champs BLOB.
380382- Export de données vers des script SQL HTML
381383- Gestionnaire de service (backup, restore, gfix...)
382384- Alerteur d'événements
383385
384386Vous pouvez télécharger la documentation depuis le [site web de FBLib](http://fblib.altervista.org/).
385387
386388## Interbase Unifié
387389
388390UIB fournit un accès aux bases de données Interbase, Firebird et YAFFIL. La page d'accueil est [www.progdigy.com](http://www.progdigy.com). Un référentiel SVN est disponible sous <https://uib.svn.sourceforge.net/svnroot/uib>.
389391
390392## TechInsite Object Persistence Framework (tiOPF)
391393
392394Plus d'information sur tiOPF peut être trouvée dans cette [[tiOPF/fr|page]].
393395
394396## Descendant de TDataSet pour Advantage
395397
396398Le TdataSet dérivé Advantage fournit un moyen de connection (et d'ouverture de tables avec) au serveur de base de données Advantage. Advantage est une base de données incorporée sans administration qui fournit des accès client/serveur tout comme des accès pair à pair vers les formats de fichier DBF de Clipper, FoxPro et Visual FoxPro 9, tout comme aussi un format de fichier propriétaire qui fournit un chemin de migration permettant l'emploi de fonctionnalités plus récentes.
397399
398400Caractéristiques clés:
399401
400402- Base de données pair à pair sans royaltie avec chemin de migration vers le client/serveur.
401403- Multi plate-forme (clients supportés sur Windows et Linux, serveurs supportés sur Windows, Linux et NetWare)
402404- Supporte à la fois les accès navigationnels et relationnels SQL aux bases de données.
403405- Moteur de recherche plein-texte.
404406- Table, Index, Memo, et chiffrement de la communication.
405407- Compatible avec les composants TDataset natifs.
406408- Sauvegarde en ligne.
407409- Le serveur supporte la réplication.
408410
409411Pour plus d'informations, voir le site web [Advantage Database Server](http://www.advantagedatabase.com).
410412
411413## ZMSQL, base de données en mémoire à SQLM amélioré
412414
413415Pour plus d'informations, voir la [page wiki ZMSQL](http://wiki.lazarus.freepascal.org/ZMSQL).
414416
415417ZMSQL est un descendant de TBufDataset Open Source et une base de données en mémoire améliorée pour Free Pascal, opérant avec des tables en texte plat à valeurs séparées par des points-virgules. Complétement écrit en Pascal, il n'a pas de dépendance avec des bibliothèques externes. Il utilise le moteur JanSQL pour l'implémentation SQL.
416418
417419Il offre :
418420
419421- Le chargement depuis et la sauvegarde vers des tables en texte plat.
420422- L'utilisation de SQL pour interroger les données.
421423- La copie des données et du schéma depuis d'autres DataSet.
422424- L'option de prédéfinir fielddefs ou la créer à la volée.
423425- Le filtrage maître/détail.
424426- L'intégrité référentielle.
425427- Les requêtes paramétrées.
426428
427429Le fichier téléchargé contient le code source, des démo d'applications illustrant les caractéristiques du composant ainsi qu'un readme.
428430
429431# Voir aussi
430432
431433- [[Portal:Databases|Database Portal]]
432434- [[Lazarus DB Faq/fr|Lazarus DB Faq]]
433435
434436---
435437*From the Free Pascal wiki, page "Databases/fr", as it stood on 2020-02-16 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).*

Back to history