Подключение приложения к базе данных

У меня есть приложение, взаимодействующее с базой данных Access с использованием класса DAO, недавно я преобразовал базу данных в базу данных sqlite.

Я не знаю, какой способ подключения лучше для дизайна, как показано ниже:

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

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

1

Решение

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

Поскольку вы используете SqlLite, я предполагаю, что это однопользовательская БД, поэтому параллелизм, конфликт соединений, блокировка и т. Д. Вряд ли будут проблемой.

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

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

1

Другие решения

Вы знаете, что ваши два варианта имеют + и -. Для вашего особого случая я думаю, что создавать подключение к базе данных каждый раз не так уж и плохо, потому что создание подключения к sqlite очень быстро и не занимает много времени. Также таким образом вы можете создавать / закрывать более одного соединения одновременно, что является хорошим преимуществом, возможно, вы не делаете это сейчас, но в будущем, возможно, вам придется это делать.

0

По вопросам рекламы [email protected]