Base SQLite, ajout d'enregistrements
Bonjour,
Je tente par code d'ajouter un enregistrement à une table nommée Infosvue d'une base SQLITE3 (Base1.db3) dans un programme Lazarus ( version 1.4.2. sous W7). Les données que je souhaite ajouter sont dans un tableau unidimensionnel (valtab [1], valtab[2] valtab [3]). Les colonnes de la table qui a pour nom InfosVUe ont pour en-tête de champ les noms Archiv, Nom1, Prenom1
nota : une autre partie du programme qui elle, fonctionne bien, me permet d'actualiser les valeurs associées aux variables du tableau et qui sont toutes des Strings.
Pour cela je construit la variable RequetAjout suivante :
Code:
RqtAjoutAB := 'Insert Into Infosvue ( Archiv, Nom1, Prenom1 ) Values ( quotedStr(Valtab[1]), quotedStr(Valtab[2]), quotedStr(valtab[3]) )' ;
et je modifie la valeur du SQL d'un ZQQuery par :
Code:
1 2 3 4 5 6
| ZC_Cree1.Connected := False ;
ZC_Cree1.Database := DnomBaseA ;
ZC_Cree1.Connected := True ;
ZQ_Cree1.SQL.Clear ; // Mise à zéro de la chaine SQL
ZQ_Cree1.SQL.Text := RqtAjoutAB ;
ZQ_Cree1.ExecSQL ; |
où ZC_Cree1 et ZQ_Cree1 sont les composants Zeos associés à la base de nom complet DnomBaseA.
Ce code me renvoie une erreur SQL à l’exécution et pourtant toutes les variables existent bien.
Cela fait plusieurs heures que je tente de résoudre le problème sans succès.
D'autre part, est-il utile, prudent, nécessaire (?) de fermer l'accès à la table par un une fois l'ajout effectué
Suite de mon message a/s Base SQlite
J'avais oublié la fin de mon message pour cette nouvelle discussion.
Merci d'avance pour vos réponses éclairées, en cette période de vacances.
Cordialement
R.O.
Base SQLITE - ajout d'enregistrement
Bonjour à tous,
Merci à Tintinux pour sa réponse
En fait la solution se trouvait dans une discussion un peu plus bas dans la discussion initiée par ALT pour MySQL. et l'erreur venait de la rédaction de la requête comme le note Tintinux et un code correct est :
Code:
RqtAjoutAB := 'Insert Into Infosvue ( Archiv, Nom1, Prenom1 ) Values ( '+ quotedStr(Valtab[1]) +',' + quotedStr(Valtab[2]) +',' +quotedStr(valtab[3])+' )' ;
Par contre je suis toujours preneur de la façon de terminer proprement la gestion des tables pour éviter une corruption éventuelle lorsque les opérations pour lesquelles on les sollicite sont terminées :
ZQQuery. Close ?? ou toute autre instruction adéquate.
Merci
Cordialement
R.P.