pouvons-nous travailler avec plusieurs tables de base de données avec le même objet de connexion de la base de données en même temps. Supposons que j'ai inséré une valeur dans la table 1 et en même temps également inséré la valeur dans la table 2 de la base de données avec le même objet de la connexion à la base de données. J'utilise la base de données sqlite dans le code et l'obtention de l'exception verrouillée par la base de données pendant commit().inséré dans plusieurs tables de base de données à la fois
Répondre
Toute transaction verrouille la base de données complète. Vous ne pouvez pas accéder à la base de données sqlite au cours d'une transaction en cours.
Vous avez besoin d'une instruction par table, tout en utilisant la même connexion:
INSERT INTO t1(x, y, z) VALUES(1, 2, 4);
INSERT INTO t2(a, b, c) VALUES("FOO", "BAR", 2.1);
Ceux-ci devraient être insérés comme une seule unité de travail.
Si vous insérez des valeurs du même objet, vous faites probablement quelque chose de mal. "Dites-le une fois et seulement une fois" suggère qu'il ne devrait pas être nécessaire d'enregistrer la même valeur dans deux tables différentes. Je l'insèrerais une fois et utiliserais un déclencheur pour le mettre dans un tableau d'histoire ou quelque chose comme ça.
J'ai l'exception suivante, est-ce lié à l'exception verrouillée de la base de données ou à l'exception verrouillée de la base de données Exception: appel() appelé dans un état inapproprié stacktrace java.lang.IllegalStateException: appel() appelé dans un état inapproprié dans org.ibex .nestedvm.Runtime.call (Runtime.java:655) à org.ibex.nestedvm.Runtime.call (Runtime.java:647) à org.sqlite.NestedDB.call (NestedDB.java:406) à org.sqlite. NestedDB.call (NestedDB.java:389) à org.sqlite.NestedDB.reset (NestedDB.java:135) à org.sqlite.RS.close (RS.java:98) – rajkumari
Ne sait pas. Publiez du code. – duffymo
J'ai reçu l'exception suivante, est-ce lié à l'exception verrouillée de la base de données ou à l'exception verrouillée de la base de données Exception: call() appelé dans l'état inapproprié stacktrace java.lang.IllegalStateException: call() appelé dans un état inapproprié at org.ibex .nestedvm.Runtime.call (Runtime.java:655) à org.ibex.nestedvm.Runtime.call (Runtime.java:647) à org.sqlite.NestedDB.call (NestedDB.java:406) à org.sqlite. NestedDB.call (NestedDB.java:389) à org.sqlite.NestedDB.reset (NestedDB.java:135) à org.sqlite.RS.close (RS.java:98) – rajkumari
ou est l'exception de base de données verrouillée Connection.commit() line – rajkumari
Une exception verrouillée signifie que la base de données est en cours d'utilisation. Vous devez utiliser une bibliothèque de wrapper pour les opérations db, vérifiez sa documentation au cas où quelque chose vous manque. Et mettre à jour le courrier avec du code. –