БД SQLite - это исключение из списка заблокированных. Как его разблокировать, если я никогда не играл с ним? - PullRequest
0 голосов
/ 01 июля 2011
java.sql.SQLException: database is locked
    at org.sqlite.DB.throwex(DB.java:288)
    at org.sqlite.NestedDB.prepare(NestedDB.java:115)
    at org.sqlite.DB.prepare(DB.java:114)
    at org.sqlite.Stmt.executeQuery(Stmt.java:89)

Когда я делаю запрос, я получаю это исключение.Я читал об этом в SA и Google, и самый распространенный вывод - кто-то начал делать другой запрос, который так и не закончился.У меня проблема в том, что я никогда не делал запросы к этой БД на этом компьютере.Я скачал файл базы данных с того места, где я его размещал (я создал его ранее), и ничего с ним не сделал, поэтому я не знаю, почему он будет заблокирован.Когда я делаю запрос с помощью программы под названием SQLite Database Browser, она работает просто отлично.Спасибо за помощь, я предоставлю больше информации, если нужно, просто дайте мне знать.

adapter = new DbAdapter();
ResultSet info;
ResultSet attributes;
for (int i = 1; i < 668; i++) {
    if (i%50 == 0) {
        System.out.print('.');
    }
    info = adapter.makeQuery("SELECT * FROM vehicles WHERE id = '" + i + "'");
    attributes = adapter.makeQuery("SELECT * FROM vehicle_moves WHERE vehicle_id = '" + i + "'");
    if(info.next()) {
        base = new (info, attributes);
    }

    vehicleArray[i] = base;
}
System.out.println("Done.");
info.close();
attributes.close();
adapter.close();

Выше приведен код, где это происходит.Я сделал некоторую домашнюю работу по всему коду и, конечно, проблема в этом коде, другие запросы к БД работают просто отлично.Ребята, у вас что-нибудь есть?

1 Ответ

0 голосов
/ 02 июля 2011

Сам SQLite, безусловно, может обрабатывать выполнение запроса во время обработки результатов другого запроса. Было бы ужасно бесполезно, если бы это не могло быть сделано! Скорее всего, возникнут проблемы, если у вас будет открыто два подключения к базе данных одновременно. Я вообще не знаю этот класс DbAdapter - не в каком пакете он находится или какой модуль его предоставляет - но если он предполагает, что он может открыть много соединений (или если он не поддерживает надлежащую гигиену соединений), тогда это, безусловно, будет причиной проблем, с которыми вы сталкиваетесь. Посмотри туда первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...