Base de données CPDB

Un article de Wikipedia.

(Différences entre les versions)
(Ressources)
Version actuelle (24 mars 2008 à 11:19) (modifier) (défaire)
(Conclusions)
 
(29 révisions intermédiaires masquées)
Ligne 7 : Ligne 7 :
== Résultats ==
== Résultats ==
-
Le choix s'est porté sur la base de données CPDB (voir [[Base de données CPDB#Ressources|Ressources]]).
+
Le choix s'est porté sur la base de données libre CPDB (voir [[Base de données CPDB#Ressources|Ressources]]).
 +
 
 +
=== Préambule ===
 +
Elle s'utilise en installant la base de données (voir [[Base de données CPDB#Ressources|Ressources]]) et en important la liaison avec Pascal (voir [[Base de données CPDB#Ressources|Ressources]]) via :
 +
 
 +
<code pascal>
 +
{$i PalmAPI.pas}
 +
 
 +
{$i CPDBSTD4PP.pas}
 +
</code>
 +
 
 +
=== Initialisation ===
 +
L'initialisation de la librairie s'effectue au début du programme par :
 +
<code pascal>
 +
CPDB_OPENLIB;
 +
</code>
 +
 
 +
=== Existence d'une base de données ===
 +
Le test de l'existence d'une base de données se réalise de la manière suivante :
 +
<code pascal>
 +
var bd : String;
 +
...
 +
bd = 'databaseCPDB';
 +
...
 +
if CPDB_DatabaseExist(bd)= CPDB_ERR_NOEXIST then
 +
begin
 +
// Creation de la base de donnees
 +
end
 +
else
 +
begin
 +
// Ouverture et utilisation de la base de donnees
 +
end;
 +
</code>
 +
 
 +
=== Création d'une base de données ===
 +
La création d'une base de données se réalise par :
 +
<code pascal>
 +
var bd : String;
 +
...
 +
bd = 'databaseCPDB';
 +
...
 +
Error:=CPDB_CreateDatabase(0,bd,DBCreator,'DATA1=INT;DATA2=SHORTINT;');
 +
...
 +
</code>
 +
 
 +
Le dernier argument de ''CPDB_CreateDatabase'' décrit les enregistrements de la base de données.
 +
 
 +
Il y a 4 types possibles :
 +
* STRING
 +
* SHORTINT
 +
* INT
 +
* LONGINT
 +
 
 +
La description s'effectue en spécifiant le nombre de l'entrée '=' le type de données ';'.
 +
 
 +
=== Ouverture d'une base de données ===
 +
L'ouverture d'une base de données se réalise ainsi :
 +
<code pascal>
 +
var Error : Err;
 +
iHandle :UInt8;
 +
bd : String;
 +
...
 +
bd = 'databaseCPDB';
 +
...
 +
Error:=CPDB_Open(0,bd,dmModeReadWrite,iHandle);
 +
...
 +
</code>
 +
 
 +
Avec les modes suivants de PalmAPI.pas
 +
* dmModeReadOnly
 +
* dmModeWrite
 +
* dmModeReadWrite
 +
 
 +
=== Lecture de données ===
 +
La lecture des données s'effectue en utilisant les 4 fonctions associées aux 4 types possibles :
 +
 
 +
<code pascal>
 +
var Error : Err;
 +
iHandle :UInt8;
 +
gh : Int16;
 +
...
 +
Error:=CPDB_ReadInt(iHandle,'GH',gh);
 +
...
 +
</code>
 +
 
 +
* CPDB_ReadInt : Pour lire un type INT (Int16)
 +
* CPDB_ReadShortInt : Pour lire un type SHORTINT (byte)
 +
* CPDB_ReadLongInt : Pour lire un type LONGINT (Int32)
 +
* CPDB_ReadString : Pour lire un STRING (String) ('''voir ci-dessous''')
 +
 
 +
==== Lecture d'une chaîne de caractères ====
 +
La lecture d'une chaîne de caractère est un peu plus complexe. Il faut suivre la procédure suivante :
 +
 
 +
<code pascal>
 +
function readstring(name:string):string;
 +
var line:^string;
 +
temp:string;
 +
 
 +
address:MemHandle;
 +
 
 +
iHandle:UInt8;
 +
Error:Err;
 +
 
 +
begin
 +
Error:=CPDB_ReadString(iHandle,name,address);
 +
line:=MemHandleLock(address);
 +
temp:=line^;
 +
Error:=MemHandleUnlock(address);
 +
Error:=MemHandleFree(address);
 +
readstring:=temp;
 +
end;
 +
</code>
 +
 
 +
=== Ecriture de données ===
 +
L'écriture d'un nouvel enregistrement s'effectue de la manière suivante :
 +
 
 +
<code pascal>
 +
var Error : Err;
 +
iHandle :UInt8;
 +
gh : Int16;
 +
...
 +
Error:=CPDB_AddRecord(iHandle);
 +
Error:=CPDB_WriteString(iHandle,'INT',gh);
 +
Error:=CPDB_UpdateRecord(iHandle);
 +
...
 +
</code>
 +
 
 +
A chaque type est associé une fonction d'écriture :
 +
* CPDB_WriteString : Pour lire un STRING (String)
 +
* CPDB_WriteInt : Pour lire un type INT (Int16)
 +
* CPDB_WriteShortInt : Pour lire un type SHORTINT (byte)
 +
* CPDB_WriteLongInt : Pour lire un type LONGINT (Int32)
 +
 
 +
=== Fermeture d'une base de données ===
 +
La fermeture d'une base de données se réalise ainsi :
 +
<code pascal>
 +
var Error : Err;
 +
iHandle :UInt8;
 +
...
 +
Error:=CPDB_Close(iHandle);
 +
...
 +
</code>
 +
 
 +
=== Terminaison ===
 +
Il faut clore la librairie en utilisant la commande :
 +
<code pascal>
 +
CPDB_CLOSELIB;
 +
</code>
== Conclusions ==
== Conclusions ==
 +
* Il est possible de stocker des informations entre les différents lancements d'un programme.
 +
* Cette base de données libre existe sous deux formes, la version libre standard utilisée ici qui est limitée à 100 enregistrements et la version libre Pro sans limitation. Il s'avère que la version libre Pro ne fonctionnait pas correctement. Il aurait été judicieux de fusionner ces deux versions pour n'en faire qu'une sans aucune limitation.
 +
* Il existe aussi un conduit permettant de synchroniser les bases de données (voir [http://www.ppcompiler.org PP Compiler]).
 +
== Ressources ==
== Ressources ==
* Base de données CPDB sur site de [http://www.ppcompiler.org PP Compiler]
* Base de données CPDB sur site de [http://www.ppcompiler.org PP Compiler]
-
* Base de données CPDB standard [[Media::CPDBSTD120.prc]]
+
* Base de données CPDB standard [[Media:CPDBSTD120.prc]]
* Liaison Pascal avec la base de données CPDB [[Media:CPDBSTD4PP.pas.pdb]]
* Liaison Pascal avec la base de données CPDB [[Media:CPDBSTD4PP.pas.pdb]]
* Source [[CPDBSTD4PP.pas]]
* Source [[CPDBSTD4PP.pas]]

Version actuelle

Sommaire

Base de données CPDB

But

Disposer d'une base de données sous Palm.

Introduction

La nécessité de pouvoir stocker des données entre deux lancements d'un programme nécessite de disposer d'une base de données.

Résultats

Le choix s'est porté sur la base de données libre CPDB (voir Ressources).

Préambule

Elle s'utilise en installant la base de données (voir Ressources) et en important la liaison avec Pascal (voir Ressources) via :

{$i PalmAPI.pas}
 
{$i CPDBSTD4PP.pas}

Initialisation

L'initialisation de la librairie s'effectue au début du programme par :

CPDB_OPENLIB;

Existence d'une base de données

Le test de l'existence d'une base de données se réalise de la manière suivante :

var bd : String;
...
bd = 'databaseCPDB';
...
if CPDB_DatabaseExist(bd)= CPDB_ERR_NOEXIST then
begin
// Creation de la base de donnees
end
else
begin
// Ouverture et utilisation de la base de donnees
end;

Création d'une base de données

La création d'une base de données se réalise par :

var bd : String;
...
bd = 'databaseCPDB';
...
Error:=CPDB_CreateDatabase(0,bd,DBCreator,'DATA1=INT;DATA2=SHORTINT;');
...

Le dernier argument de CPDB_CreateDatabase décrit les enregistrements de la base de données.

Il y a 4 types possibles :

  • STRING
  • SHORTINT
  • INT
  • LONGINT

La description s'effectue en spécifiant le nombre de l'entrée '=' le type de données ';'.

Ouverture d'une base de données

L'ouverture d'une base de données se réalise ainsi :

var Error : Err;
iHandle :UInt8;
bd : String;
...
bd = 'databaseCPDB';
...
Error:=CPDB_Open(0,bd,dmModeReadWrite,iHandle);
...

Avec les modes suivants de PalmAPI.pas

  • dmModeReadOnly
  • dmModeWrite
  • dmModeReadWrite

Lecture de données

La lecture des données s'effectue en utilisant les 4 fonctions associées aux 4 types possibles :

var Error : Err;
iHandle :UInt8;
gh : Int16;
...
Error:=CPDB_ReadInt(iHandle,'GH',gh);
...
  • CPDB_ReadInt : Pour lire un type INT (Int16)
  • CPDB_ReadShortInt : Pour lire un type SHORTINT (byte)
  • CPDB_ReadLongInt : Pour lire un type LONGINT (Int32)
  • CPDB_ReadString : Pour lire un STRING (String) (voir ci-dessous)

Lecture d'une chaîne de caractères

La lecture d'une chaîne de caractère est un peu plus complexe. Il faut suivre la procédure suivante :

function readstring(name:string):string;
var line:^string;
temp:string;
 
address:MemHandle;
 
iHandle:UInt8;
Error:Err;
 
begin
Error:=CPDB_ReadString(iHandle,name,address);
line:=MemHandleLock(address);
temp:=line^;
Error:=MemHandleUnlock(address);
Error:=MemHandleFree(address);
readstring:=temp;
end;

Ecriture de données

L'écriture d'un nouvel enregistrement s'effectue de la manière suivante :

var Error : Err;
iHandle :UInt8;
gh : Int16;
...
Error:=CPDB_AddRecord(iHandle);
Error:=CPDB_WriteString(iHandle,'INT',gh);
Error:=CPDB_UpdateRecord(iHandle);
...

A chaque type est associé une fonction d'écriture :

  • CPDB_WriteString : Pour lire un STRING (String)
  • CPDB_WriteInt : Pour lire un type INT (Int16)
  • CPDB_WriteShortInt : Pour lire un type SHORTINT (byte)
  • CPDB_WriteLongInt : Pour lire un type LONGINT (Int32)

Fermeture d'une base de données

La fermeture d'une base de données se réalise ainsi :

var Error : Err;
iHandle :UInt8;
...
Error:=CPDB_Close(iHandle);
...

Terminaison

Il faut clore la librairie en utilisant la commande :

CPDB_CLOSELIB;

Conclusions

  • Il est possible de stocker des informations entre les différents lancements d'un programme.
  • Cette base de données libre existe sous deux formes, la version libre standard utilisée ici qui est limitée à 100 enregistrements et la version libre Pro sans limitation. Il s'avère que la version libre Pro ne fonctionnait pas correctement. Il aurait été judicieux de fusionner ces deux versions pour n'en faire qu'une sans aucune limitation.
  • Il existe aussi un conduit permettant de synchroniser les bases de données (voir PP Compiler).

Ressources