Spec-Zone.ru › Qt 6.0

Подключение к базам данных

Для доступа к базе данных с помощью 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.0/sql-connecting.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API