2009-06-26 11 views
5

Je suis confronté à une erreur SQLite bien que je n'utilise aucun AutoCommit explicite true ou false. quelqu'un peut fournir une entrée sur cette erreur. Quelle est la situation où vous obtiendrez cette erreur.Erreur SQLite: impossible de valider la transaction - instructions SQL en cours en utilisant le code Java

Merci d'avance. Cordialement, Manasi Enregistrer

+0

Pouvez-vous s'il vous plaît poster un fragment de code? –

+0

Et quelle version de SQLite utilisez-vous? –

+0

J'utilise SQLite Version 3 –

Répondre

5

J'ai fait face à un problème similaire à plusieurs reprises (dans mon cas, c'était une annulation qui n'était pas possible) quand j'étais dans une boucle en boucle sur les entrées de la table. Tant que le curseur traite les entrées, une instruction SQL est "en cours". Je ne sais pas exactement, si cela interdit aussi les commits, mais ça pourrait l'être.

Lorsque vous essayez de traiter des entrées de table et d'insérer des entrées dans la même table ou dans une table différente, vous pouvez essayer de collecter les données en mémoire et après la boucle, les insertions ou mises à jour. Additionnel: "Autocommit" est normalement défini sur "True" dans SQLite (cela dépend bien sûr de la couche d'accès que vous utilisez - J'utilise Python et Apsw, donc je ne peux pas vous en dire plus à ce sujet en Java). Cela signifie que chaque insertion est autocommited immédiatement.

==> cela pourrait être une autre solution. Au lieu de stocker les données en mémoire, vous pourriez essayer d'ouvrir explicitement une transaction et de la valider après la boucle - de cette façon, le problème devrait disparaître aussi.

Questions connexes