Comme SQLite a le vent en poupe dans certains topic, j'ai tenté de m'y mettre.
J'ai cependant un soucis pour récupérer une simple ligne.
Résumer :
Une base #MABASE
Une table contacts
4 colonnes : id,prenom,nom,email
Monsoucis vient de ma fonction AfficheInfo(base, prenom$)
qui ne me renvoit rien alors qu'elle devrait renvoyer : 1 Cyrille LDV arsworld[arob]gmail[point]com si je clic sur Cyrille LDV dans le combo ce qui lance un
Code : Tout sélectionner
AfficheInfo(#MaBase, "Cyrille")
Code : Tout sélectionner
UseSQLiteDatabase()
Enumeration
#WIN
#MaBase
#Fichier
#Liste
#Info
EndEnumeration
Global Filename$ = GetCurrentDirectory()+"test01.sqlite"
Declare LectureBDD(BaseID)
Declare Insere(Base, prenom$, nom$, email$)
Declare Delete(Base, prenom$, nom$)
Declare.s AfficheInfo(Base, Prenom$)
; PROCEDURE Pour les gens ne connaissant pas les requêtes SQL
Procedure Insere(Base, prenom$, nom$, email$)
Result = DatabaseUpdate(Base, "INSERT INTO contacts (nom, prenom, email) VALUES ('"+prenom$+"','"+nom$+"','"+email$+"')" )
If Result = 0
Debug DatabaseError()
EndIf
ProcedureReturn Result
EndProcedure
Procedure Delete(Base, prenom$, nom$)
Result = DatabaseUpdate(Base, "DELETE (nom, prenom) From contacts WHERE prenom = "+prenom$+ "AND nom="+nom$ )
If Result = 0
Debug DatabaseError()
EndIf
ProcedureReturn Result
EndProcedure
Procedure.s AfficheInfo(base, prenom$)
Requete$ = "SELECT * FROM contacts WHERE prenom ='"+prenom$+"' LIMIT 1"
If DatabaseQuery(Base, Requete$)
While NextDatabaseRow(base) ; Enumeration des enregistrements
If GetDatabaseString(Base, 1) = Prenom$
Debug "Trouvé !"
match$ = GetDatabaseString(Base, 0) + " " + GetDatabaseString(Base, 1) + " " + GetDatabaseString(Base, 2)+ " " + GetDatabaseString(Base, 3)
EndIf
Wend
FinishDatabaseQuery(base)
Else
match$ = DatabaseError()
EndIf
ProcedureReturn match$
EndProcedure
Procedure LectureBDD(BaseID)
; On Ouvre la Base
If OpenDatabase(#MaBase, Filename$, "", "")
Debug "Connecté à PureBasic.sqlite"
; Si la base existe déjà, on lit les infos des contacts
If DatabaseQuery(#MaBase, "SELECT * FROM contacts ORDER BY prenom DESC") ; Recupère tous les enregistrements de la table 'contacts' par ordre alphabétique de prénoms
While NextDatabaseRow(#MaBase)
Debug GetDatabaseString(#MaBase, 0) + " " + GetDatabaseString(#MaBase, 1) + " " + GetDatabaseString(#MaBase, 2)+ " " + GetDatabaseString(#MaBase, 3)
AddGadgetItem(#Liste, -1, GetDatabaseString(#MaBase, 1) + " " + GetDatabaseString(#MaBase, 2))
Wend
Debug "Fermeture de la requête"
FinishDatabaseQuery(#MaBase)
; Insertion d'un autre utilisateur
; Insere(#MaBase, "John", "Doe")
Else
;"On va créer une base contacts avec 2 contacts"
; La requête suivante va créer une table "contacts" avec les colonnes nom, prenom et email. Le champ email ne pourra pas être dupliqué)
Requete$ = "CREATE TABLE contacts (id INTEGER PRIMARY KEY, nom VARCHAR(50) Not NULL, prenom VARCHAR(50) Not NULL, email VARCHAR(100) Not NULL UNIQUE);"
If DatabaseUpdate(#MaBase, Requete$)
Debug "Table créée"
Insere(#MaBase, "Cyrille", "LDV","arsworld@gmail.com" )
Insere(#MaBase, "Bob", "Marley","rastafari@threelittlebirds.com")
Debug "données insérées, affichage dans le comboBox"
EndIf
; Maintenant que les infos sont insérées, on les lit et les affiche
If DatabaseQuery(#MaBase, "SELECT * FROM contacts") ; Recupère tous les enregistrements de la table 'contacts'
While NextDatabaseRow(#MaBase)
Debug GetDatabaseString(#MaBase, 0) + " " + GetDatabaseString(#MaBase, 1) + " " + GetDatabaseString(#MaBase, 2)+ " " + GetDatabaseString(#MaBase, 3)
AddGadgetItem(#Liste, -1, GetDatabaseString(#MaBase, 1) + " " + GetDatabaseString(#MaBase, 2))
Wend
Debug "Fermeture de la requête"
FinishDatabaseQuery(#MaBase)
EndIf
EndIf
EndIf
EndProcedure
; =========== PROGRAMME ==========
;Création du fichier qui contiendra la base.
If OpenFile(#Fichier, Filename$,#PB_File_SharedWrite)
Debug "Fichier de base de données créé"
CloseFile(#Fichier)
Else
Debug "Impossible de créer la base"
End
EndIf
If OpenWindow(#WIN, 0, 0, 270, 180, "SQLIte Demo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ComboBoxGadget(#Liste, 10, 10, 250, 21, #PB_ComboBox_Editable)
LectureBDD(#MaBase)
SetGadgetState(#Liste, 0)
StringGadget(#info,2,WindowHeight(#win)-22,WindowWidth(#win)-4,20,"info",#PB_String3D_ReadOnly)
SetGadgetColor(#Info,#PB_Gadget_BackColor,$0) : SetGadgetColor(#Info,#PB_Gadget_FrontColor,#White)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Liste
Prenom$ = StringField(GetGadgetItemText(#Liste, GetGadgetState(#liste)),1," ")
Debug "Lancement de la recherche pour : " + Prenom$
SetGadgetText(#Info, AfficheInfo(#MaBase, Prenom$) )
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow
EndIf
CloseDatabase(#MaBase)