LDB ( Little DataBase ) 1.0 Beta

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

LDB ( Little DataBase ) 1.0 Beta

Message 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
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Bonjour

Message 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
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message 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
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

merci
tu aurais pu mettre l'aide en Français
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message 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

Code : Tout sélectionner

;{/ Déclaration des Procédures
Declare LdbCountField()
;}

voila un bug ...
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

tu lance la source de la lib.... :wink:
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message 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 )
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message 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????
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message 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
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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 ..
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message 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 ?
Dernière modification par Droopy le lun. 23/mai/2005 21:48, modifié 1 fois.
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Message 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
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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" ....
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message 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 )
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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 :wink:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Répondre