Управление соединениями SQLite в Android

У меня (надеюсь) быстрый вопрос относительно обработки соединений с базой данных SQLite в Android. У меня есть приложение, которое состоит, естественно, из нескольких видов деятельности. У меня нет проблем с созданием / обновлением / запросом базы данных, так как я создал отдельный выделенный класс для обработки этой работы через SQLiteOpenHelper и т. Д.

Мой вопрос заключается в следующем: поскольку все эти действия совместно используют одну и ту же базу данных, это обычно реализуется как один статический член, или каждое действие должно иметь свое собственное соединение? Конечно, меня беспокоит стоимость повторного подключения к базе данных в каждом действии.

Или, другими словами, есть ли причина не хранить только один экземпляр?

Мне также интересно, если что-то происходит за кулисами, например, пул соединений.NET, чтобы снизить стоимость открытия соединений.

Заранее спасибо!

2 ответа

Решение

Открытие соединения в SQLite составляет около 0,2 мс.

Лучшая практика подсказывает нам открывать и закрывать соединение каждый раз, когда оно нам нужно.

Просто используйте SQLiteOpenHelper.getReadableDatabase() и SQLiteOpenHelper.getWriteableDatabase () - Android будет управлять и кэшировать соединение, поэтому вам это не нужно.

Фактически, обратитесь к официальной документации Google Using Databases:

Для записи и чтения из базы данных вызовите getWritableDatabase() и getReadableDatabase(), соответственно. Они оба возвращают базу данных SQLiteDatabase

Другие вопросы по тегам