Depuis hier j'essaye d'insérer via PB des date en SQLITE.. Sans succés.
ça doit être une histoire de syntaxe mais je vois pas pourquoi.. Si j'entre mes requêtes via une interface sqlite ça fonctionne mais pas via PB.
Les enregistrements se font (incrémentation de ID) mais le champ dateR reste vide (je l'ai mis à NULL donc pas d'erreur)
J'ai découpé mon code en procédures.
C'est à insert que ça chie. Vous pouvez le tester. Enregistrez au préalable le code dans un fichier pour que la bdd se créée au même endroit.
D'avance merci, ça me gonfle de bloquer là dessus.
Code : Tout sélectionner
UseSQLiteDatabase()
Enumeration
#Fichier
#MaBase
EndEnumeration
Global Filename$ = GetCurrentDirectory()+"bbDate2.sqlite"
Global TableName$ = "datetest"
Global id$ = "id"
Global ColDate$ = "dateR"
;**********************************
; GESTION DE LA BASE
;**********************************
Procedure.b CreerFichier()
If OpenFile(#Fichier, Filename$,#PB_File_SharedWrite)
Debug "Fichier de base de données ouvert"
CloseFile(#Fichier)
Debug "Fichier créé"
ProcedureReturn 1
Else
Debug "Erreur création du fichier"
ProcedureReturn 0
EndIf
EndProcedure
Procedure.b CreerBase()
If OpenDatabase(#MaBase, Filename$, "", "")
Requete$ = "CREATE TABLE "+TableName$+" ("+id$+" INTEGER PRIMARY KEY AUTOINCREMENT, "+ColDate$+" DATETIME NULL);"
Debug "requete créer : " + Requete$
If DatabaseUpdate(#MaBase, Requete$)
Debug "Table 'datetest' créée"
ProcedureReturn 1
Else
erreur$ = DatabaseError()
If FindString(erreur$,"exists") ; si la table existe déjà
Debug "Info : " + erreur$
ProcedureReturn 2
EndIf
EndIf
Else
erreur$ = DatabaseError()
Debug "ERREUR : " + erreur$
ProcedureReturn 0
EndIf
EndProcedure
Procedure Insere(Base, dateR$)
If OpenDatabase(#MaBase, Filename$, "", "")
If DatabaseQuery(#MaBase, "SELECT * FROM "+TableName$) ; Recupère tous les enregistrements
SetDatabaseString(Base, 1, dateR$)
requete$ = "INSERT INTO "+TableName$+" ("+ColDate$+") VALUES (?)"
Debug "Requête insert : " + requete$
Result = DatabaseUpdate(Base, requete$)
If Result = 0
erreur$ = DatabaseError() + " "+ Str(#PB_Compiler_Line)
Debug "Erreur : " + erreur$
Else
Result = 1
Debug "Date ajoutée ! : "+ ColDate$ + " " + dateR$
EndIf
FinishDatabaseQuery(#MaBase)
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Procedure LisBase(NomColonne$="dateR")
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 "+TableName$) ; Recupère tous les enregistrements
Debug "~ Liste des enregistrements ~"
Debug "ID colonne " + DatabaseColumnIndex(#MaBase, id$) + " dateR colonne " + DatabaseColumnIndex(#MaBase, ColDate$)
Debug "Affichage des données"
While NextDatabaseRow(#MaBase)
Debug "ID : " + GetDatabaseString(#MaBase, 0) + " dateR : " + GetDatabaseString(#MaBase, 1)
Wend
Debug "Fermeture de la requête"
FinishDatabaseQuery(#MaBase)
EndIf
EndIf
EndProcedure
; ---------- PROG -------------
CreerFichier()
CreerBase()
LisBase()
Insere(#Mabase, "2022-10-05 12:00:00")
; On lit à nouveau
LisBase()
Debug "Fermeture de la bdd"
CloseDatabase(#Mabase)