У меня есть ситуация, когда два удаленных сервиса обращаются к БД SQLite. Каждый сервис открывает отдельное соединение с БД и выполняет операции вставки / чтения / удаления. Службы работают нормально, кроме случаев, когда они остановлены и перезапущены снова.
Я получаю следующее исключение.
"android.database.sqlite.DatabaseObjectNotClosedException: приложение не закрывало курсор или объект базы данных, который был открыт здесь"
Я дважды проверял все операторы открытия / закрытия базы данных и операторы открытия / закрытия курсора. Я все еще получаю эту ошибку.
Кажется, я не могу указать пальцем на проблему, но похоже, что она должна что-то делать с двумя службами, одновременно обращающимися к БД, с открытыми соединениями одновременно.
Любые предложения / указатели?
У меня есть отдельные методы открытия / закрытия.
private void open() {
m_database = m_helper.getWritableDatabase();
}
private void close() {
if (m_database != null) {
m_database.close();
}
}
Для каждой операции crud я явно открываю и закрываю следующим образом.
public long insert(int type, double latitude, double longitude, long timestamp, float speed, double altitude) {
SQLiteStatement insertStmt;
long status;
open();
insertStmt = m_database.compileStatement(INSERT);
insertStmt.bindLong(1, type);
insertStmt.bindDouble(2, latitude);
insertStmt.bindDouble(3, longitude);
insertStmt.bindLong(4, timestamp);
insertStmt.bindDouble(5, speed);
insertStmt.bindDouble(6, altitude);
status = insertStmt.executeInsert();
close();
return status;
}