В Qt есть несколько шагов, которые необходимо выполнить до тех пор, пока не будет доступен доступ к базе данных.Управление базой данных и временем жизни соединения
Самый первый шаг, чтобы добавить базу данных по имени соединения:
QSqlDatabase::addDatabase("QMYSQL", connectionName);
После этого я могу использовать open()
и close()
, чтобы открыть/закрыть соответствующее соединение.
Эта база данных также может быть удалена с помощью следующего вызова:
QSqlDatabase::removeDatabase(connectionName);
Моего приложения делает это очень много, так как он получает доступ к различным базам данных в параллельных процессах для многих целей. Также это серверное приложение работает очень долго, без перезапуска.
Мне кажется очевидным, что плохо поддерживать связь, открывая все время из-за возможных сетевых проблем и ограниченных подключений на стороне сервера.
Однако как насчет addDatabase()
? Есть ли какой-либо вред или польза при вызове addDatabase()
без, вызывающего removeDatabase()
непосредственно после (но только для выхода приложения)? Или лучше ли прямировать эти звонки в любое время?
В настоящее время я не называю addDatabase(), если имя соединения было добавлено до этого с помощью contains(). Поэтому я могу предотвратить ненужное замену соединения. – Silicomancer
Знаете ли вы, насколько дорогостоящий addDatabase()/removeDatabase() может быть вызван до/после каждого доступа (appart из множества ненужных строк кода)? – Silicomancer
@Silicomancer Если вы используете много объектов 'QSqlDatabase' с тем же именем соединения, у вас может быть много накладных расходов, если вы добавляете базу данных в каждую используемую часть. Это потому, что все объекты 'QSqlDatabase', которые используют одно и то же имя соединения, изменяются при вызове' addDatabase'. Я обновил ответ. – Nejat