2010-04-06 3 views
1

мы можем работать с несколькими таблицами базы данных с одним и тем же объектом соединения базы данных одновременно., вставленный в несколько таблиц базы данных за один раз

Предположим, что я вставил значение в таблицу 1 и в то же время также вставил значение в таблицу 2 базы данных с тем же объектом соединения с базой данных.

Я использую базу данных sqlite в коде и получаю исключение блокировки базы данных, а commit().

ответ

1

Любая транзакция блокирует полную базу данных. Вы не можете получить доступ к базе данных sqlite во время любой текущей транзакции.

+0

У меня есть следующее исключение: это связано с исключением блокировки базы данных или может привести к исключению блокировки базы данных. Исключение: вызов() вызван в неуместном состоянии stacktrace java.lang.IllegalStateException: call() вызван в неуместном состоянии на 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

+0

или это исключение блокировки базы данных произошло из-за obj Connection.commit() line – rajkumari

+0

Заблокированное исключение в значительной степени означает, что БД используется. Вы должны использовать некоторую библиотеку-обертку для операций db, проверить ее документацию, если у вас что-то не хватает. И обновить сообщение с кодом. –

1

Вам нужно одно заявление за столом, все с использованием того же соединения:

INSERT INTO t1(x, y, z) VALUES(1, 2, 4); 
INSERT INTO t2(a, b, c) VALUES("FOO", "BAR", 2.1); 

Они должны быть вставлены в одну единицу работы.

Если вы вставляете значения из одного и того же объекта, вы, вероятно, делаете что-то неправильно. «Say It Once and Only Once» предполагает, что не нужно сохранять одно и то же значение в двух разных таблицах. Я бы вставлял его один раз и использовал триггер, чтобы поместить его в таблицу истории или что-то в этом роде.

+0

У меня есть следующее исключение: это связано с исключением блокировки базы данных или может привести к исключению блокировки базы данных Исключение: call() вызван в неуместном состоянии stacktrace java.lang.IllegalStateException: call() вызван в неуместном состоянии на 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

+0

Не знаю. Поместите некоторый код. – duffymo

Смежные вопросы