Подключение к базам данных
Для доступа к базе данных с помощью QSqlQuery или QSqlQueryModel, создайте и откройте одну или несколько подключений к базе данных. Подключения к базам данных обычно идентифицируются по имени подключения, а не по имени базы данных. Вы можете иметь несколько подключений к одной и той же базе данных. QSqlDatabase также поддерживает понятие по умолчанию подключения, которое является безымянным подключением. При вызове функций членов QSqlQuery или QSqlQueryModel, принимающих имя подключения, если вы не передадите имя подключения, будет использовано подключение по умолчанию. Создание подключения по умолчанию удобно, когда ваше приложение требует только одного подключения к базе данных.
Обратите внимание на разницу между созданием подключения и его открытием. Создание подключения включает в себя создание экземпляра класса QSqlDatabase. Подключение нельзя использовать, пока оно не будет открыто. Следующий фрагмент кода демонстрирует, как создать подключение по умолчанию и затем открыть его:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("bigblue");
db.setDatabaseName("flightdb");
db.setUserName("acarlson");
db.setPassword("1uTbSbAs");
bool ok = db.open(); Первая строка создает объект подключения, а последняя строка открывает его для использования. Между этими строками мы инициализируем некоторые сведения о подключении, включая имя базы данных, имя хоста, имя пользователя и пароль. В этом случае мы подключаемся к базе данных MySQL flightdb на хосте bigblue. Аргумент "QMYSQL" для addDatabase() указывает тип драйвера базы данных, который следует использовать для подключения. Список драйверов баз данных, включенных в Qt, показан в таблице поддерживаемых драйверов баз данных.
Подключение в примере будет подключением по умолчанию, потому что мы не передаем второй аргумент в addDatabase(), который является именем подключения. Например, здесь мы устанавливаем два подключения к базе данных MySQL с именами "first" и "second":
QSqlDatabase firstDB = QSqlDatabase::addDatabase("QMYSQL", "first");
QSqlDatabase secondDB = QSqlDatabase::addDatabase("QMYSQL", "second"); После инициализации этих подключений необходимо вызвать open() для каждого из них, чтобы установить активные подключения. Если open() завершается неудачно, он возвращает false. В этом случае вызовите QSqlDatabase::lastError() для получения информации об ошибке.
После установления подключения мы можем вызвать статическую функцию QSqlDatabase::database() из любого места с именем подключения, чтобы получить указатель на это подключение к базе данных. Если мы не передадим имя подключения, она вернет подключение по умолчанию. Например:
QSqlDatabase defaultDB = QSqlDatabase::database();
QSqlDatabase firstDB = QSqlDatabase::database("first");
QSqlDatabase secondDB = QSqlDatabase::database("second"); Чтобы удалить подключение к базе данных, сначала закройте базу данных с помощью QSqlDatabase::close(), а затем удалите его с помощью статического метода QSqlDatabase::removeDatabase().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/sql-connecting.html