Приложение Android sqlite принудительно закрывается на устройстве - PullRequest
0 голосов
/ 18 ноября 2010

Я использую класс SQLiteOpenHelper для создания, открытия базы данных.для моего приложения я создаю доступный для записи объект SQLiteDatabase, который я использую для чтения и записи данных в базу данных.Этот объект является статическим для основного класса и используется во всех приложениях для чтения и записи в базу данных.мое приложение работает должным образом на эмуляторе.но на устройстве после некоторого чтения записи запрос запускается.почему это происходит, пожалуйста, если у кого-нибудь есть решение, помогите мне.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

У меня была такая же проблема несколько недель назад, и я нашел эту страницу , это именно то, что не так. SQLite содержит ошибки в Android и реализован неправильно, поэтому нельзя одновременно читать и записывать потоки в базу данных / таблицу.
setLockingEnabled () просто не работает так, как предполагалось.

Я запустил все методы, которые читают и записывают в db "Synchronized", что означает, что у вас никогда не будет проблем с чтением или записью данных одновременно, независимо от количества потоков.

С уважением Tobias

0 голосов
/ 18 ноября 2010

Не рекомендуется иметь помощника в качестве статического экземпляра. Скорее вы должны создавать его каждый раз, когда вам нужно получить доступ к БД. Может случиться так, что ваше соединение с БД закрывается Android (потому что ему требуется память, потому что слишком много открытых соединений ...), и когда вы делаете запрос, вы не проверяете, что соединение все еще открыто.

Вы можете прочитать этого урока , чтобы понять, как это сделать правильно.

В основном внутри деятельности, идея:

private void reloadData() {
    MyDBHelper db = new MyDBHelper(this.getApplicationContext());
    db.open();
    Cursor c = db.query(...);
    db.close();

    // Update your data using the cursor
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...