Difference between revisions of "Databases/fr"

From Lazarus wiki
Jump to navigationJump to search
Line 140: Line 140:
 
Si vous avez modifié ou inséré un enregistrement, les nouvelles valeurs sont tenues dans un tampon.
 
Si vous avez modifié ou inséré un enregistrement, les nouvelles valeurs sont tenues dans un tampon.
 
* L'appel à la méthode Cancel du DataSet efface le nouvel enregistrement (insertion) ou revient aux valeurs précédentes (édition).
 
* L'appel à la méthode Cancel du DataSet efface le nouvel enregistrement (insertion) ou revient aux valeurs précédentes (édition).
* L'appel à la méthode Postdu 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.
+
* 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.
  
 
==Insertion d'un nouvel enregistrement==
 
==Insertion d'un nouvel enregistrement==

Revision as of 10:45, 8 March 2017

Deutsch (de) English (en) español (es) français (fr) italiano (it) 日本語 (ja) português (pt) русский (ru) 中文(中国大陆)‎ (zh_CN)

Portail de la base de données

Références:

Tutoriels/articles pratiques :

Bases de données

Advantage - MySQL - MSSQL - Postgres - Interbase - Firebird - Oracle - ODBC - Paradox - SQLite - dBASE - MS Access - Zeos

Cette page est une introduction sur le sujet 'Lazarus et les bases de données'. La table suivante donne une vue d'ensemble des bases de données supportées.

Cela 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.

Base de données supportées

Base de données Nom du paquet Nécessite une bibliothèque client ? Nécessite un serveur ? Versions supportées Plates-formes supportées
Advantage TAdsDataSet Oui Non 10.1 et supérieur i386: Linux, Win32
DBase DBFLaz Non Non III+, IV, VII Toutes
En mémoire memds Non Non - Toutes
En mémoire bufdataset Non Non - Toutes
Firebird SQLdb Oui Selon 1 1 - 2.5 i386: Linux, Win32
(Visual) FoxPro DBFLaz Non Non 2.0, 2.5, 3.0 (pas complétement) Toutes
Interbase SQLdb Oui Oui 4 - 6 i386: Linux, Win32
Microsoft SQL Server SQLdb Oui Oui 6- FPC 2.6.2+. Linux, OSX, Win32, probablement *BSD, probablement Solaris2
MySQL SQLdb Oui Oui 3.0 - 5.5 i386: Linux, Win32
ODBC SQLdb Oui Selon 3.x 3 i386: Linux, Win32
Oracle SQLdb Oui Oui - -
Paradox TParadoxDataSet Non Non jusqu'à la version de table 7 (et au dessus ??) Toutes
Paradox TParadox Oui Non Win32
PostgreSQL SQLdb Oui Oui 6.6 - 8 i386: Linux, Win32
Sybase Adaptive Server Enterprise (ASE) SQLdb Oui Oui Certain Linux, OSX, Win32, probablement *BSD, probablement Solaris2
SQLite SQLdb Oui Non sqlite3 Toutes
SQLite SQLite(3)Laz Oui Non sqlite2,sqlite3 Toutes
Text files sdf Non Non - Toutes

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/OSX/FreeBSD/ou autre plate-forme supportée par Firebird.

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] et ftp://ftp.freepascal.org/fpc/contrib/windows/dblib_x64.zip].

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.

Les liaisons aux clients de base de données

Si 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.

La 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).

Pour é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).

Datasets

L'utilisation de base de données dans Lazarus (ou Free Pascal) est fondamentalement basé sur la classe 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.

Les 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).

Les 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 Base de données pour ce qui est à faire pour votre SGBD.

Quand 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.

Utilisation de TDataSets par code

L'accès par programmation sera expliqué dans plus de détails dans Utilisation de composants DataSet et TField, mais en guise de simple survol :

  • 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.
  • Utilisez les descendants de TField pour :
    • Accéder aux informations générales sur les champs.
    • accéder aux valeurs spécifiques pour la ligen courante. (utilisez la proporiété As..., telle que AsString, AsInteger, etc.)
  • Accéder aux champs d'un descendant de TDataSet en utilisant soit :
    • La propriété Fields, p.ex. Fields[0] est le premier champ,
    • La méthode FieldByName, p.ex. FieldByName('AGE') retourne le champ associé avec le champ de base de données appelé 'AGE'.

Voir Type de champs de base de données pour une liste des types de champ.

Utilisation des contrôles visuels (sensibles aux données)

Pour 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 :

  • 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).
  • Ajouter un composant TDataSource (depuis l'onglet Data Access à la fiche et liez-le au DataSet (définissez la propriété).
  • Ajoutez des contrôles sensibles aux données depuis l'onglet Data Controls à la fiche et liez-les chacun au composant DataSource (et non pas au DataSet).
  • La plupart des contrôles sont reliés à un seul champ, vous devez donc définir le champ pour chaque contrôle.

Voir #Contrôles de données plus bas pour plus de détails sur les contrôles.

Etat de Dataset

Les 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 :

Etat Fonction
dsInactive Le dataset est fermé.
dsBrowse L'utilisateur peut parcourir les données dans le DataSet.
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.
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.

Les 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 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 (voir plus bas) permet à l'utilisateur de changer explicitement l'état.

Méthode de TDataset UpdateStatus

UpdateStatus détermine l'état courant du tampon d'enregistrement, si les mises à jour n'ont pas été appliquées à la base de données.

Exemple de comment détecter si ApplyUpdates insérera, mettra à jour ou supprimera la donnée :

procedure QueryAfterPost(DataSet: TDataSet);
begin
  case DataSet.UpdateStatus of
    usUnmodified : ShowMessage('Unmodified');
    usModified   : ShowMessage('Modified');
    usInserted   : ShowMessage('Inserted');
    usDeleted    : ShowMessage('Deleted');
  end;
end;
Explication des valeurs
  • usUnmodified: l'enregistrement reste inchangé.
  • usModified: L'enregistrement existe dans la base de données mais est localement supprimé.
  • usInserted: L'enregistrement n'existe pas encore dans la base de données mais est localement inséré.
  • usDeleted: L'enregistrement existe dans la base de données mais est localement supprimé.

Méthodes Post et Cancel

Si vous avez modifié ou inséré un enregistrement, les nouvelles valeurs sont tenues dans un tampon.

  • L'appel à la méthode Cancel du DataSet efface le nouvel enregistrement (insertion) ou revient aux valeurs précédentes (édition).
  • 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.

Insertion d'un nouvel enregistrement

To insert a new record into a TDataset descendent, one should use the method Insert. After that one can set the field values and then finally call Post to commit the new record, as the example below shows.

The example also shows how to insert BLOB data from a file - you can also use LoadFromStream to load the data from a stream.

  MyDataset.Insert;
  MyDataset.Fields[0].AsInteger := 4; //an integer field
  MyDataset.Fields[1].AsString := 'First Name'; //a string field
  TBlobField(MyDataset.Fields[2]).LoadFromFile('SomeBlobfile.bin'); //blob field
  MyDataset.Post;

Comment sauter rapidement vers une enregistrement particulier dans la table ?

Après sélection tous les enregistrements de la table

If you use SELECT * FROM to select all records of the table and then desires to quickly jump between them, you will have to build an index and search on it. It is more efficient to select only the record that you want.

Sélection du seul enregistrement désiré

One fast solution to jump to a particular record is to select only it, for example doing:

var
  MyDataset: TSQLQuery;
begin
  //...
  MyDataset.FieldDefs.Add('SessionId', ftLargeint);
  MyDataset.FieldDefs.Add('GameEvent', ftLargeint);
  MyDataset.FieldDefs.Add('TableId', ftInteger);
  MyDataset.FieldDefs.Add('LoggedIn', ftBoolean);
  MyDataset.FieldDefs.Add('PlayerId', ftInteger);
  MyDataset.Active := False;
  { Non-parameterized format; may run into issues with text containing ' and dates
  SQLText := Format('select * from "GameSession" WHERE "SessionId"=%d', [ASessionId]);
  }
  // Solution: parameterized query:
  // Actually, if this is done in a loop, you only need to set the SQL.Text once,
  // and only change the parameter value
  MyDataset.SQL.Text := 'select * from "GameSession" WHERE "SessionID"=:SessionID');
  MyDataSet.ParamByName('SessionID').AsLargeInt := ASessionID;
  try
    MyDataset.Active := True;
  except
    //...
  end;

You can then read information using something like this:

 lPlayerId := MyDataset.Fields[4].AsInteger;

Filtrage

You can filter your dataset to restrict the records to a subset you want (e.g. all surnames starting with Smith).

Méthodes Locate/lookup

Although more often used in non-SQL datasets (e.g. TParadoxDataSet, TDbf) you can jump between records using locate/lookup.

En utilisant TSQLQuery

For more information about TSQLQuery see Working With TSQLQuery

Exportation

FPC/Lazarus contains functionality to let you export datasets to various formats; see e.g.

Of course, you could also do it manually (see e.g. FPSpreadsheet#Converting_a_database_to_a_spreadsheet for export to Excel format using fpspreadsheet)

Contrôles de données

To use any of these controls, add the control to a form and set at least the datasource property. Other key properties will be noted.

Contrôle Datasource

This control keeps track of which record the linked controls currently are on. The datasource contorl must be linked to a dataset (e.g. a TSQLQuery).

Contrôles à champ unique

These controls all attach to a single field. As well as datasource, set the field name. Controls include:

  • DBText control Displays a text field (readonly, no border)
  • DBEdit control Displays / edits a text field as an edit box
  • DBMemo control Displays / edits a text field in a multi-line edit box
  • DBImage control Displays a picture stored in a database as a BLOB. Note: by default, Lazarus stores a header with the image type before the image data in the database BLOB field. This is different from Delphi. However, you can make TDBImage Delphi compatible: see Lazarus For Delphi Users#TDBImage
  • DBListBox control and DBComboBox Control Allow the user to insert values into a database field from the list of values in the Items property of the controls
  • DBLookupListBox control and DBLookupComboBox control, see also dblookupcombobox Allow the user to insert values into a database field by displaying the contents of a lookup field in another table. Though these controls store their results in a single field, you need another field for the lookup values. Note: at lest for DBLookupComboBox, there is a bug with FPC 2.6.0 that requires the listfield to be present in the datasource as well, you can bypass it by declaring a calculated field with the same name as the listfield in the datasource's dataset that does nothing.
  • DBCheckBox control Displays / edits a boolean field by checking/clearing a check box
  • DBRadioGroup control Displays the items as in a normal radio group, reading/setting the field value from a matching values list
  • DBCalendar control Displays / edits a date field using a calendar panel
  • DBGroupBox control

Contrôle DBGrid

This control can show a number of fields in a row/column layout - in fact by default it shows them all. However, you can put entries into the columns collection to restrict it to specific fields and to set the widths and titles of each column.

Apart from the mentioned documentation, some more detail can be found here: Grids Reference Page#TCustomDBGrid

Contrôle Navigateur

This control gives the user some direct control over the dataset. It allows the user to:

  • Move to the next or previous record, or to the start or end of the records
  • Add a new record (equivalent to a dataset.insert method call)
  • Put the dataset into edit mode
  • Delete a record
  • Post or Cancel current changes
  • Refresh the data (useful in multiuser database applications)

Key Properties:

  • VisibleButtons: Lets you control what the user can do. For example, if deletes are not allowed, hide the delete button. If you have a DBGrid attached to the same dataset, you may decide you do not need the next and prior buttons.
  • Width: If you do not show all buttons, you may want to set the width to (height*number_of_visible_buttons)

Exécution de tests de bases de données de FPC

Free Pascal database components include a fpcunit-based test framework, dbtestframework, that can be used to verify functionality. See the directory source\packages\fcl-db\tests\ in your FPC source tree. Included is a test framework that can be run on various database components, as well as some other tests (e.g. test of database export).

To run the test framework on a certain database:

1. Save source\packages\fcl-db\tests\database.ini.txt as source\packages\fcl-db\tests\database.ini

2. Modify source\packages\fcl-db\tests\database.ini to choose which database type you will use.

Example for Interbase/Firebird:

[Database]
type=interbase

3. In the same file, customize settings for your database. E.g. if you chose interbase before:

[interbase]
connector=sql
connectorparams=interbase
; Database name/path (note: database needs to exist already)
; You can use aliases (see aliases.conf in your Firebird documentation)
name=testdb
user=sysdba
password=masterkey
; your hostname may very well differ:
; Leave blank if you want to use an embedded Firebird database
hostname=192.168.0.42

4. Compile and run source\packages\fcl-db\tests\dbtestframework.pas (You can also use Lazarus to compile and run the GUI version, dbtestframework_gui) If you are using an embedded database on Windows (e.g. Firebird embedded or sqlite), copy the required DLL files to the directory first. The output will be in XML format (or displayed on your screen if you use dbtestframework_gui).

Please see source\packages\fcl-db\tests\README.txt for more details.

Paquets Bases de données contenus dans Lazarus

sqldblaz.lpk

sqldbcomponents.png

This package provides access to different databases. These include:

  • Interbase/Firebird
  • Microsoft SQL Server (except on Lazarus/FPC x64 for Windows)
  • MySQL
  • Oracle (except on Lazarus/FPC x64 for Windows)
  • PostgreSQL (except on Lazarus/FPC x64 for Windows)
  • SQLite (with support for the Spatialite extension)
  • Sybase ASE (Adaptive Server Enterprise - not to be confused with Sybase ASA) (except on Lazarus/FPC x64 for Windows)
  • any database that has an ODBC driver.

The components (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMSSQLConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection, TSybaseConnection) are on the 'SQLdb' tab in the component palette.

dbflaz.lpk

This package provides access to dBase and FoxPro databases. You can get more information in the Lazarus Tdbf Tutorial. The TDbf component is on the Data Access tab in the component palette.

sqlitelaz.lpk

This package provides access to SQLite databases. You can get more information in the Lazarus Database Overview.

sdflaz.lpk

The component TSdfDataSet can be found on the Data Access tab in the component palette.

lazreport.lpk

The homepage of the report generator is http://lazreport.sourceforge.net/. More informationen (et al. an additional link) can be found here. LazReport depends on the Printer4Lazarus package. With revision 11950 LazReport was included in the Lazarus SVN repository.

lazdbexport.lpk

Voir lazdbexport.

Paquets externes / bibliothèques

Objets Zeos DataBase

These components provide access to different databases. You can find more information here. This wiki also contains a Zeos tutorial.

Objets Pascal Data

There is now an alternative.

Support:

  • MySQL 4.1 and 5.0
  • sqlite-2 and sqlite-3
  • pgsql-8.1
  • interbase-5, interbase-6, firebird-1.0, firebird-1.5, firebird-1.5E, firebird-2.0, firebird-2.0E
  • mssql (Microsoft library) and sybase (FreeTDS library)
  • oracle

like prepared statements, binding, and stored procedures are supported by database API called Pascal Data Objects, which is inspired by PHP Data Objects. All the code and documentation necessary to use this new API is available on Sourceforge:

http://pdo.sourceforge.net

TPSQL

These components provide access via TCP/IP to PostgreSQL databases. You can find more information on this page.

FIBL

These components provide access to Interbase and Firebird databases. The homepage is http://sourceforge.net/projects/fibl.

IBX

IBX For Lazarus are components to access Firebird databases: see IBX

Bibliothèque FBLib Firebird

FBLib is an open Source Library No Data Aware for direct access to Firebird Relational Database from Borland Delphi/Kylix, Free Pascal and Lazarus.

Current Features include:

  • Direct Access to Firebird 1.0.x, 1.5.x and 2.x Classic or SuperServer
  • Multiplatform [Win32,Gnu/Linux,FreeBSD)
  • Automatic select client library 'fbclient' or 'gds32'
  • Query with params
  • Support SQL Dialect 1/3
  • LGPL License agreement
  • Extract Metadata
  • Simple Script Parser
  • Only 100-150 KB added into final EXE
  • Support BLOB Fields
  • Export Data to HTML SQL Script
  • Service manager (backup,restore,gfix...)
  • Events Alerter

You can download documentation on FBLib's website.

Interbase Unifié

UIB provides access to Interbase, Firebird and YAFFIL databases. The homepage is www.progdigy.com. A svn repository is available under https://uib.svn.sourceforge.net/svnroot/uib .

TechInsite Object Persistence Framework (tiOPF)

More information about tiOPF can be found on this page.

Descendant de TDAtaSet pour Advantage

The Advantage TDataSet Descedant provides a means of connecting to (and opening tables with) the Advantage Database Server. Advantage is a flexible, administration-free embedded database that provides Client/Server as well as Peer-to-peer access to Clipper, FoxPro and Visual FoxPro 9 DBF file formats, as well as a proprietary file format that provides a migration path allowing the use of newer features.

Key Features:

  • Royalty-free peer-to-peer database access with migration path to Client/Server
  • Multi-Platform (Clients supported on Windows and Linux, Server supported on Windows, Linux, and NetWare)
  • Supports Both navigational and relational SQL database access
  • Full-text search engine
  • Table, Index, Memo, and communication encryption
  • Compatible with native TDataset components
  • Online Backup
  • Server supports Replication

For more information, see the Advantage Database Server website.

ZMSQL, base de données en mémoire à SQLM amélioré

For more information, see the ZMSQL wiki page

ZMSQL is an open source, TBufDataset descendant SQL enhanced in-memory database for Free Pascal (FPC), operating with semicolon-separated values flat text tables. Completely written in Pascal, it has no dependencies on external libraries. It uses JanSQL engine for SQL implementation.

It offers:

  • Loading from and saving to flat text tables
  • Use of SQL to query the data
  • Copy data and schema from other datasets
  • Option to predefine fielddefs or create it on-the fly
  • Master/detail filtering
  • Referential integrity
  • Parameterized queries

The download contains the source code, some demo applications illustrating the features of the component as well as a readme.

Voir aussi