2014-08-10 7 views
0

Полезно ли подключиться к базе данных (sqlite) у конструктора класса, который будет хранить обработчик базы данных при запуске демон? Я чувствую, что это плохая идея, но не знаю, почему .. Или все в порядке?C++ подключение к базе данных в конструктор

Редактировать: и что делать, если я получу ошибку при открытом соединении.

+0

Посмотрите, как [куча других оберток C++] (http://stackoverflow.com/questions/120295/what-is-a-good-oo-c-wrapper-for-sqlite) реализует это. –

ответ

2

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

Если вы не можете подключиться, одно решение - исключение - это действительно зависит от того, что вы ожидаете от «вызывающего» в таком случае.

+0

Бросок исключения - это метод * only *, позволяющий предотвратить создание объекта. Для любого другого механизма обработки ошибок потребуется очистка объекта вручную. –

1

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

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

Смежные вопросы