Я использую следующий метод для чтения / записи БД:
База данных находится по адресу /data/data/ndompackagename отпуска/databases/Database.db.
Поскольку размер базы данных превышает 3 МБ, мы нашли специальное решение, чтобы скопировать ее туда и заполнить соответствующими данными.
Ниже приведен класс, реализующий задачу для получения открытой базы данных. Этот класс-одиночка.
public class DatabaseHelper extends SQLiteOpenHelper
для открытия базы данных мы используем следующий метод:
SQLiteDatabase db = DatabaseHelper.getInsance().getReadableDatabase();
Тогда rawquery используется для запроса БД:
Cursor cursor = db.rawQuery(query, null);
Затем, наиболее подходящие для наших целей, мы извлекаем данные базы данных в память в различных экземплярах набора результатов:
while (cursor.moveToNext()) {
ResultSet rs = new ResultSet();
rs.setThis(cursor.getInt(0));
rs.setThat(cursor.getString(1));
// and so on.. this is just an example
ResultList.add(rs);
}
Наконец:
cursor.close();
db.close();
При необходимости отметим, что транзакция также используется, но использование транзакции не привело к ускорению.
Для каждого отдельного запроса (вполне) соблюдается приведенный выше шаблон. Но, к сожалению, это решение кажется очень медленным. Итак, некоторые методы профилирования сделаны, и стало ясно, что sqlite setlocale всегда запускается на getReadableDatabase()
(который создан! Не забудьте), и этот метод занимает большую часть времени. В среднем 40% в одиночку ..
Посоветуйте, пожалуйста, как решить эту проблему! Или, может быть, предложите другой шаблон для удовлетворения наших потребностей!
Заранее спасибо