Recherche d'un framework / base de données
Recherche d'un framework / base de données
Bonjour,
Je me posait une question, peut être que l'un d'entre vous saura me répondre (c'est pas vital, c'est juste une question par curiosité)
Existe t-il une base de données avec laquelle on pourrait faire des requêtes SQL, mais sans avoir besoin d'un programme serveur ? ca pourrait être utile quand on aurait envie de stocker des données à partir d'un programme sans pour autant être obligé d'installer toute une usine à gaz.
Je verrais bien ca sous la forme d'une lib, qu'on pourrais utiliser dans un prog PB par exemple une base de données pour répertorier des cds ou des dvd par exemple
Je me posait une question, peut être que l'un d'entre vous saura me répondre (c'est pas vital, c'est juste une question par curiosité)
Existe t-il une base de données avec laquelle on pourrait faire des requêtes SQL, mais sans avoir besoin d'un programme serveur ? ca pourrait être utile quand on aurait envie de stocker des données à partir d'un programme sans pour autant être obligé d'installer toute une usine à gaz.
Je verrais bien ca sous la forme d'une lib, qu'on pourrais utiliser dans un prog PB par exemple une base de données pour répertorier des cds ou des dvd par exemple
Quelques manoucheries : I can't give you anything but love / Stompin' at decca
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Recherche d'un framework / base de données
Mono utilisateur ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Recherche d'un framework / base de données
SQLite ne te convient pas ?
Re: Recherche d'un framework / base de données
>> SQLite <<.
Personnellement, j'adore, j'ai créé un programme au boulot autour de cette architecture, en mono utilisateur, pas d'installation fastidieuse.
Personnellement, j'adore, j'ai créé un programme au boulot autour de cette architecture, en mono utilisateur, pas d'installation fastidieuse.
PureBasic 6.03 - Windows 11 22H2 (64 bits)
Re: Recherche d'un framework / base de données
C'est vrai que SQLite est bien pour ce genre de chose. D'ailleurs si je ne me trompe pas, cette lib ("libpbsqlite3.a") est déjà présente dans le répertoire des librairies de PB alors son utilisation devrait donc être simple à faire. (un petit Import et l'affaire est dans le sac.)
Si non, il est possible de faire un truc similaire avec un fichier xml qui peut être lu avec n'importe quel éditeur texte (Bloc-Note, gedit, etc.).
C'est ce qui est utilisé par Rhythmbox par exemple pour les listes de lecture des fichiers de musique.
A+
Guimauve
Si non, il est possible de faire un truc similaire avec un fichier xml qui peut être lu avec n'importe quel éditeur texte (Bloc-Note, gedit, etc.).
C'est ce qui est utilisé par Rhythmbox par exemple pour les listes de lecture des fichiers de musique.
A+
Guimauve
Re: Recherche d'un framework / base de données
ah oui SQLLite....Merci les gars j'en avait entendu parler mais je croyais que c'était une base classique client/serveur
bon bah j'y jeterais un oeil à l'occaze alors
et avec SQLite, les données sont enregistrées dans une seul fichier de données ? est-ce qu'on peux mettre plusieurs tables par fichier de données ?
et au niveau des perf ca vas ?
bon bah j'y jeterais un oeil à l'occaze alors
et avec SQLite, les données sont enregistrées dans une seul fichier de données ? est-ce qu'on peux mettre plusieurs tables par fichier de données ?
et au niveau des perf ca vas ?
Quelques manoucheries : I can't give you anything but love / Stompin' at decca
Re: Recherche d'un framework / base de données
Un petit exemple avec SQLite
En espérant qu'il pourra t'aider.
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; CODE GÉNÉRÉ AUTOMATIQUEMENT, NE PAS MODIFIER À
; MOINS D'AVOIR UNE RAISON TRÈS TRÈS VALABLE !!!
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Code généré par : Dev-Type V1.4.2
; Nom du projet : Le nom du projet ici
; Nom du fichier : Nom du fichier
; Version du fichier : 0.0.0
; Programmation : À vérifier
; Programmé par : Votre Nom Ici
; Alias : Votre Pseudo Ici
; Courriel : adresse@quelquechose.com
; Date : 27-03-2009
; Mise à jour : 27-03-2009
; Codé pour PureBasic V4.30
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
UseSQLiteDatabase()
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Déclaration de la Structure <<<<<
Structure Student
Name.s
Age.b
Gender.s
id.l
EndStructure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les observateurs <<<<<
Macro GetStudentName(StudentA)
StudentA\Name
EndMacro
Macro GetStudentAge(StudentA)
StudentA\Age
EndMacro
Macro GetStudentGender(StudentA)
StudentA\Gender
EndMacro
Macro GetStudentID(StudentA)
StudentA\id
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les mutateurs <<<<<
Macro SetStudentName(StudentA, P_Name)
GetStudentName(StudentA) = P_Name
EndMacro
Macro SetStudentAge(StudentA, P_Age)
GetStudentAge(StudentA) = P_Age
EndMacro
Macro SetStudentGender(StudentA, P_Gender)
GetStudentGender(StudentA) = P_Gender
EndMacro
Macro SetStudentID(StudentA, P_ID)
GetStudentID(StudentA) = P_ID
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Update <<<<<
Macro UpdateStudent(StudentA, P_Name, P_Age, P_Gender, P_ID = 0)
SetStudentID(StudentA, P_ID)
SetStudentName(StudentA, P_Name)
SetStudentAge(StudentA, P_Age)
SetStudentGender(StudentA, P_Gender)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Macro de déboguage <<<<<
Macro DebugStudent(StudentA)
Debug Str(GetStudentID(StudentA)) + " : " + GetStudentName(StudentA) + " : " + Str(GetStudentAge(StudentA)) + " : " + GetStudentGender(StudentA)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Code généré en : 00.016 secondes (6687.50 lignes/seconde) <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Procedure InsertDataBaseStudentElement(DatabaseID.l, *StudentA.Student)
DatabaseUpdate(DatabaseID, "INSERT INTO Student (Name, Age, Gender) VALUES ('" + GetStudentName(*StudentA) + "', '" + Str(GetStudentAge(*StudentA)) + "', '" + GetStudentGender(*StudentA) + "')")
EndProcedure
Procedure UpdateDataBaseStudentElement(DatabaseID.l, *StudentA.Student)
DatabaseUpdate(DatabaseID, "UPDATE Student SET Name='" + GetStudentName(*StudentA) + "', Age='" + Str(GetStudentAge(*StudentA)) + "', Gender='" + GetStudentGender(*StudentA) + "' WHERE ID='" + Str(GetStudentID(*StudentA)) + "'")
EndProcedure
Procedure DeleteDataBaseStudentElement(DatabaseID.l, *StudentA.Student)
DatabaseUpdate(DatabaseID, "DELETE FROM Student WHERE ID='" + Str(GetStudentID(*StudentA)) + "'")
EndProcedure
Procedure CreateDatabaseStudentTable(DatabaseID.l)
DatabaseUpdate(DatabaseID, "CREATE TABLE Student (ID INTEGER PRIMARY KEY, Name TEXT, Age INTEGER, Gender TEXT)")
EndProcedure
Procedure DeleteDatabaseStudentTable(DatabaseID.l)
DatabaseUpdate(DatabaseID, "DELETE FROM Student")
EndProcedure
Procedure ExtractDataBaseStudentElement(DatabaseID.l, *StudentA.Student)
SetStudentID(*StudentA, GetDatabaseLong(DatabaseID, 0))
SetStudentName(*StudentA, GetDatabaseString(DatabaseID, 1))
SetStudentAge(*StudentA, GetDatabaseLong(DatabaseID, 2))
SetStudentGender(*StudentA, GetDatabaseString(DatabaseID, 3))
EndProcedure
Procedure.l CreateStudentDataBase(DatabaseID.l, FileName.s)
Success.l = CreateFile(DatabaseID, FileName)
If Success
CloseFile(DatabaseID)
If OpenDatabase(DatabaseID, FileName, "", "", #PB_Database_SQLite)
CreateDatabaseStudentTable(DatabaseID)
CloseDatabase(DatabaseID)
EndIf
EndIf
ProcedureReturn Success
EndProcedure
Procedure Database_To_LinkedList(DatabaseID.l, List This.Student())
DatabaseQuery(DatabaseID, "SELECT * FROM Student")
While NextDatabaseRow(DatabaseID)
AddElement(This())
ExtractDataBaseStudentElement(DatabaseID, This())
Wend
EndProcedure
Procedure LinkedList_To_Database(DatabaseID.l, List This.Student())
ForEach This()
InsertDataBaseStudentElement(DatabaseID, This())
Next
EndProcedure
NewList Eleve0.Student()
NewList Eleve1.Student()
NewList Eleve2.Student()
NewList Eleve3.Student()
NewList Eleve4.Student()
NewList Eleve5.Student()
AddElement(Eleve0())
UpdateStudent(Eleve0(), "Pierre", 18, "Homme")
AddElement(Eleve0())
UpdateStudent(Eleve0(), "Paul", 18, "Homme")
AddElement(Eleve0())
UpdateStudent(Eleve0(), "Marcel", 20, "Homme")
AddElement(Eleve0())
UpdateStudent(Eleve0(), "Julie", 19, "Femme")
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Liste original d'élèves"
Debug "ID : Nom : Age : Sexe"
ForEach Eleve0()
DebugStudent(Eleve0())
Next
Debug ""
FileName.s = "Student.sqlite"
If CreateStudentDataBase(0, FileName)
If OpenDatabase(0, FileName, "", "")
LinkedList_To_Database(0, Eleve0())
Database_To_LinkedList(0, Eleve1())
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Liste d'élèves depuis la base de données"
Debug "ID : Nom : Age : Sexe"
ForEach Eleve1()
DebugStudent(Eleve1())
Next
Debug ""
UpdateStudent(Chantale.Student, "", 0, "", 2)
DeleteDataBaseStudentElement(0, Chantale)
UpdateStudent(Chantale, "Chantale", 28, "Femme", 3)
UpdateDataBaseStudentElement(0, Chantale)
Database_To_LinkedList(0, Eleve2())
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Liste d'élèves depuis la base de données"
Debug "; Après suppression élément ID = 2 et mise à jour ID = 3"
Debug "ID : Nom : Age : Sexe"
ForEach Eleve2()
DebugStudent(Eleve2())
Next
Debug ""
AddElement(Eleve3())
UpdateStudent(Eleve3(), "Alexandre", 33, "Homme")
AddElement(Eleve3())
UpdateStudent(Eleve3(), "Guillaume", 30, "Homme")
AddElement(Eleve3())
UpdateStudent(Eleve3(), "Ariane", 35, "Femme")
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Ajout à la Liste original d'élèves"
Debug "ID : Nom : Age : Sexe"
ForEach Eleve3()
DebugStudent(Eleve3())
Next
LinkedList_To_Database(0, Eleve3())
Debug ""
Database_To_LinkedList(0, Eleve4())
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Liste augmenté d'élèves depuis la base de données"
Debug "ID : Nom : Age : Sexe"
ForEach Eleve4()
DebugStudent(Eleve4())
Next
Debug ""
DeleteDatabaseStudentTable(0)
Database_To_LinkedList(0, Eleve5())
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Liste d'élèves détruite de la base de données"
Debug "ID : Nom : Age : Sexe"
ForEach Eleve5()
DebugStudent(Eleve5())
Next
Debug ""
CloseDatabase(0) ;ferme la base de donnée
EndIf
EndIf
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
A+
Guimauve
Re: Recherche d'un framework / base de données
Oui, un seul fichier de données pour plusieurs tables, et oui, un seul fichier de données pour y stocker la table, en tout et pour tout.
PureBasic 6.03 - Windows 11 22H2 (64 bits)
Re: Recherche d'un framework / base de données
Et coté perfs, c'est très bon. 

-
- Messages : 471
- Inscription : dim. 23/déc./2007 18:10
Re: Recherche d'un framework / base de données
Sinon Progi1984 a fait un petit tutoriel sur developpez.com
Re: Recherche d'un framework / base de données
super, merci beaucoup
j'ai de quoi faire maintenant
j'ai de quoi faire maintenant

Quelques manoucheries : I can't give you anything but love / Stompin' at decca