Page 1 sur 2
LDB ( Little DataBase ) 1.0 Beta
Publié : sam. 19/mars/2005 23:20
par Droopy
Voici une petite Lib faite uniquement avec des fonctions de PB ( aucune fonction de l'API )
Elle permet la création d'une base de donnée locale, l'ajout, la recherche, et le tri des données qu'elle contient.
J'ai écrit cette Lib car je n'ai rien compris à la lib Sqlite, ni réussi à avoir de traduction d'une lib équivalente (mais en allemand )
J'espère qu'elle vous servira, et si elle vous est utile, merci de me renvoyer les bug ainsi que les erreurs que j'aurais pu faire dans la doc ( Je l'ai écrite en Anglais ).
Si quelqu'un génère un code interessant utilisant cette lib ( exemple un carnet d'adresse), je serais interessé de l'intégrer afin d'ajouter des exemples concrets dans l'aide ( J'y indiquerait son nom bien entendu )
Pour info il y a une doc en plus (Ldb by Function.doc) qui indique toutes les fonctions de la Lib classées par type.
Télécharger la Librairie
a+ et bonne soirée
Bonjour
Publié : dim. 20/mars/2005 6:41
par Cagou-77
j'ai testé mais je pense qu'il y a un manque dans la lib
LdbAddRecord() n'est pas incluse .
j'ai regardé dans le source ( Procedure LdbAddRecord() ) o lieu de
( ProcedureDLL LdbAddRecord() )
Bonne Journée et merci encore pour ton travail
Michel
Publié : dim. 20/mars/2005 7:16
par Droopy
C'est normal
Il faut utiliser LdbInsertRecord(-1) pour ajouter un enregistrement à la fin de la base
J'ai fait ça pour limiter le nombre de fonctions
Publié : dim. 20/mars/2005 8:48
par bernard13
merci
tu aurais pu mettre l'aide en Français
Publié : dim. 20/mars/2005 8:53
par bernard13
quand je lance l'exemple fourni avec ta librairie
j'ai un message d'erreur a la ligne suivante
il marque invalid name: sameas an external command
voila un bug ...
Publié : dim. 20/mars/2005 9:57
par julien
tu lance la source de la lib....

Publié : dim. 20/mars/2005 10:10
par Droopy
Une fois la lib déboguée je la traduirais surement en français si la demande se multiplie.
Comme t'a déjà répondu Julien tu as lancé le source de la Lib ( c'est l'installeur de lib que j'utilise qui met le source dans le rep exemple, désolé pour la confusion )
Publié : dim. 20/mars/2005 10:20
par bernard13
oui j'ai ouvert purebasic et j'ai charger l'exemple fourni avec ta librarie
mais n'a t'elle pas des bugs avec la version 3.93????
Publié : dim. 20/mars/2005 12:22
par Droopy
Voici un code d'exemple de la Lib
Code : Tout sélectionner
; Test de la Lib Ldb (Little Database )
; à lancer en mode Debug
; Initialisation de la Librairie
LdbInit()
; On créé la base de donnée avec 3 champs
LdbCreate("c:\Pilotes.db","Date Naissance,Nom,Prenom")
; On ajoute un enregistrement
LdbInsertRecord(-1)
; On écrit dans l'enregistrement
LdbWrite(1,"1969") ; 1er champ
LdbWrite(2,"Schumacher") ; 2eme champ
LdbWrite(3,"Michey") ; 3eme champ
; On ajoute un enregistrement
LdbInsertRecord(-1)
; On écrit dans l'enregistrement
LdbWrite(1,"1980") ; 1er champ
LdbWrite(2,"Button") ; 2eme champ
LdbWrite(3,"Jenson") ; 3eme champ
; On ajoute un enregistrement
LdbInsertRecord(-1)
; On écrit dans l'enregistrement
LdbWrite(1,"1981") ; 1er champ
LdbWrite(2,"Alonso") ; 2eme champ
LdbWrite(3,"Fernando") ; 3eme champ
; On ajoute un enregistrement
LdbInsertRecord(-1)
; On écrit dans l'enregistrement
LdbWrite(1,"1971") ; 1er champ
LdbWrite(2,"Villeneuve") ; 2eme champ
LdbWrite(3,"Jacques") ; 3eme champ
; On insère un enregistrement en position 3
LdbInsertRecord(3)
; On écrit dans l'enregistrement
LdbWrite(1,"1975") ; 1er champ
LdbWrite(2,"Schumacher") ; 2eme champ
LdbWrite(3,"Ralph") ; 3eme champ
; On pointe sur le 1er enregistrement car on s'est trompé de prénom
LdbSetPointer(1)
; Et on change le champ 2
LdbWrite(3,"Michael")
; Tri de la Bdd par le champ1 ( Date de naissance )
LdbSortNum(1)
; Affichage des pilotes triés par année de naissance
Debug "Affichage des pilotes triés par année de naissance"
For n=1 To LdbCountRecord()
LdbSetPointer(n)
Debug LdbRead(1)+" "+LdbRead(2)+" "+LdbRead(3)
Next
Debug ""
; Tri de la Bdd par nom des pilotes
LdbSortAlpha(2,0)
; Affichage des pilotes par nom
Debug "Affichage des pilotes triés par nom"
For n=1 To LdbCountRecord()
LdbSetPointer(n)
Debug LdbRead(1)+" "+LdbRead(2)+" "+LdbRead(3)
Next
Debug ""
; recherche de tous les nom comprenant "Schumacher"
LdbSearchInit(2,"Schumacher",0)
; Affichage des pilotes ayant pour nom "Schumacher"
Debug "Affichage des pilotes avec nom 'Schumacher'"
Repeat
Champ=LdbSearch()
If Champ=0 : Break : EndIf
LdbSetPointer(Champ)
Debug LdbRead(1)+" "+LdbRead(2)+" "+LdbRead(3)
ForEver
Debug ""
; Affichage des infos de la base
Debug "Infos sur la Base"
Debug "Nombre de champs "+Str(LdbCountField())
Debug "Affichage du nom des champs"
For n=1 To LdbCountField()
Debug "Champ n° "+Str(n)+" = "+LdbGetFieldName(n)
Next
Debug "Nombre d'enregistrements "+Str(LdbCountRecord())
; On enregistre
LdbSaveDatabase()
; et on ferme la database
LdbCloseDatabase()
En espérant que ça vous simplifiera sa mise en oeuvre
Publié : lun. 23/mai/2005 21:34
par lionel_om
Droopy, tu pourrai mettre tes sources à disposition svp...
Car j'aimerai m'initier aux DB sur PB (pour changer de Visual Basic et PHP).
Mais j'arrive pas à ouvrir ma BD faîtes avec Acces (mdb), c'est normal ? c format est bien géré pourtant ! ???
Merci ..
Publié : lun. 23/mai/2005 21:44
par Droopy
Le code source est fourni regarde dans :
C:\Program Files\PureBasic\Examples\ldb\Source\Ldb.pb
et un exemple dans :
C:\Program Files\PureBasic\Examples\ldb\test LDB us.pb
Sinon sur
http://www.purearea.net/pb/english/userlibs.php
il y a une lib ( MDB) qui te permettra de te connecter facilement à une base access ( via ODBC )
J'avais pas vu le post de Gangsta93 : J'ai retesté et ça fonctionne bien avec Purebasic 3.93 ? Plus d'infos sur le bug ?
Publié : lun. 23/mai/2005 21:45
par Cagou-77
Salut Lionel_Om
si tu veut gérer des base de données avec PureBasic
je te conseil une librairie Cheetab2.dll qui gère les fichiers . dbf
pour l'utiliser depuis plus d'un mois je peut te dire que c'est génial
à toi de voir .
ci dessous l'adresse du site
http://www.planetsquires.com
Publié : mar. 24/mai/2005 18:25
par lionel_om
Merci Cagou-77, je vais regarder
Mais PureBasic n'as les composants suffisant pr gérer les DB ??? Car ya tte ce qui faut on dirait, par contre je ne vois pas de lsiet avec les types et versions des tables supportées.
@ Droopy
J'y ai pensé que plus tard, ton prog utilise un système de base de données (je vais regarder tes sources) où c'est des "recherches" dans un fichier ??? ( à l'ancienne quoi ?)
Car j'ai envie d'utiliser les vrais SGBD pour avoir des traitements rapides et très automatisés.
Car je ne vois pas d'endroit où tapper des requêtes dans ton prog :
"SELECT COUNT(*) as nb FROM my_Table GROUP BY my_cle" ....
Publié : mar. 24/mai/2005 20:54
par Droopy
La base de donnée est stockée dans une LinkedList, tout se passe en mémoire ( rapide ), puis écriture de la LinkedList sur le disque en quittant.
Tu ne pourra pas faire : SELECT COUNT(*) as nb FROM ....
Tu peut spécifier l'ajout de champs, l'ajout de données, la recherche très simplement .
LDB est à réserver à de petites bases locales . ( genre carnet d'adresses )
Publié : mar. 24/mai/2005 21:29
par lionel_om
Daccord merci.
Je vais encore faire des tests avec les fcts de PB et si j ene trouve pas mon bonheur, je me tournerai vers les LIB externes...
Merci pr vos réponses
