Должен ли я постоянно открывать() и закрывать() мою базу данных SQL или оставлять ее открытой?

Я создаю приложение, которое использует базу данных SQL для хранения данных. Способ разработки приложения будет обновляться каждые 3 минуты или около того с новыми данными в зависимости от действий пользователя во время работы приложения.

В учебниках, которые я видел, они рекомендуют закрыть базу данных после ее изменения (это "дорого" с точки зрения ресурсов).

Лучше ли оставить его открытым на время моего приложения, так как оно обновляется на довольно частой основе или я должен запустить метод close() сразу после каждого изменения?

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

Ответ 1

Я попытался оставить соединение открытым один раз - я использовал его для заполнения репитера или что-то еще - не могу вспомнить сейчас.

Позже в программе у меня была другая необходимость использовать соединение - я думаю, что у меня это было, так что, когда пользователь нажал на родительский элемент в ретрансляторе, подробный div выведет больше информации для этого элемента. Это порождало ошибку - что-то вроде "не может открыться() в открытом соединении".

Я думаю, что ошибки можно было бы избежать другим способом (например, проверить, было ли соединение, которое я пытаюсь открыть, уже открыто), но, как я думал об этом, я понял, что мне придется сделать эту стандартную практику во всем моем приложении, и это казалось слишком большой работой, поэтому я просто стал обычной практикой всегда закрывать свои соединения после каждого использования.

Связи остаются в пуле подключений - я не визг на этом, но если мне было интересно узнать о производительности, я бы подумал, что с учетом того, что стоит открыть соединение несколько раз - - в любом случае ваша ситуация требует.

Другая мысль заключается в том, что администратор базы данных может принудительно закрыть все открытые соединения, или db может закрыться по какой-то другой причине. Если вы не дБА, вы можете подумать о риске/выгоде в зависимости от того, что у вас нет долгосрочного контроля, например, чтобы поддерживать соединение открытым.

Ответ 2

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

Ответ 3

Скажем, у вас есть несколько операций с БД, которые выполняются обратно в одном потоке. Я бы сохранил БД для выполнения этих действий. Однако закройте БД после выполнения работы.

Ответ 4

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

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

Есть ли другие приложения, обращающиеся к одной и той же базе данных? Если существует риск для concurrency или проблем с блокировкой, возможно, было бы разумно закрыть базу данных после завершения чтения/записи с/на нее.

Посмотрите на следующий URL

Когда закрыть соединение db на Android? Каждый раз после завершения операции или после выхода приложения

Спасибо Deepak

Ответ 5

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

То, что я нахожу лучше всего, когда вы можете, это сделать и зарегистрировать поставщика контента. У него свои цены, но я считаю, что вы получаете намного больше, чем платите. Вы можете сделать почти все с поставщиком контента, а пример блокнота на портале Android отлично подходит для изучения того, как его реализовать. он заботится о синхронизации db и открывает/закрывает его. так что, возможно, посмотрите на это.