Spec-Zone.ru › Qt 5.14

Класс QSqlDatabase

Класс QSqlDatabase обрабатывает подключение к базе данных. Подробнее...

Заголовок: #include <QSqlDatabase>
qmake: QT += sql
  • Список всех членов, включая унаследованные

Открытые функции

QSqlDatabase(const QSqlDatabase &other)
QSqlDatabase()
QSqlDatabase & operator=(const QSqlDatabase &other)
~QSqlDatabase()
void close()
bool commit()
QString connectOptions() const
QString connectionName() const
QString databaseName() const
QSqlDriver * driver() const
QString driverName() const
QSqlQuery exec(const QString &query = QString()) const
QString hostName() const
bool isOpen() const
bool isOpenError() const
bool isValid() const
QSqlError lastError() const
QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const
bool open()
bool open(const QString &user, const QString &password)
QString password() const
int port() const
QSqlIndex primaryIndex(const QString &tablename) const
QSqlRecord record(const QString &tablename) const
bool rollback()
void setConnectOptions(const QString &options = QString())
void setDatabaseName(const QString &name)
void setHostName(const QString &host)
void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy)
void setPassword(const QString &password)
void setPort(int port)
void setUserName(const QString &name)
QStringList tables(QSql::TableType type = QSql::Tables) const
bool transaction()
QString userName() const

Статические открытые члены

QSqlDatabase addDatabase(const QString &type, const QString &connectionName = QLatin1String(defaultConnection))
QSqlDatabase addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String(defaultConnection))
QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString &connectionName)
QSqlDatabase cloneDatabase(const QString &other, const QString &connectionName)
QStringList connectionNames()
bool contains(const QString &connectionName = QLatin1String(defaultConnection))
QSqlDatabase database(const QString &connectionName = QLatin1String(defaultConnection), bool open = true)
QStringList drivers()
bool isDriverAvailable(const QString &name)
void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator)
void removeDatabase(const QString &connectionName)

Защищенные функции

QSqlDatabase(QSqlDriver *driver)
QSqlDatabase(const QString &type)

Подробное описание

Класс QSqlDatabase предоставляет интерфейс для доступа к базе данных через подключение. Экземпляр QSqlDatabase представляет подключение. Подключение обеспечивает доступ к базе данных через один из поддерживаемых драйверов баз данных, которые являются производными от QSqlDriver. В качестве альтернативы, вы можете создать свой собственный драйвер базы данных, наследуя от QSqlDriver. Смотрите Как написать свой собственный драйвер базы данных для получения дополнительной информации.

Создайте соединение (т.е., экземпляр QSqlDatabase), вызвав одну из статических функций addDatabase(), где вы указываете драйвер или тип драйвера для использования (в зависимости от типа базы данных) и имя соединения. Соединение известно по своему имени, а не по имени базы данных, к которой оно подключено. Вы можете иметь несколько соединений с одной базой данных. QSqlDatabase также поддерживает понятие по умолчанию соединения, которое является безымянным соединением. Для создания соединения по умолчанию не передавайте аргумент имени соединения при вызове addDatabase(). Впоследствии, соединение по умолчанию будет предполагаться, если вы вызываете любую статическую функцию без указания имени соединения. Следующий фрагмент показывает, как создать и открыть соединение по умолчанию с базой данных PostgreSQL:

    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("acidalia");
    db.setDatabaseName("customdb");
    db.setUserName("mojito");
    db.setPassword("J0a1m8");
    bool ok = db.open();

После создания объекта QSqlDatabase задайте параметры соединения с помощью setDatabaseName(), setUserName(), setPassword(), setHostName(), setPort() и setConnectOptions(). Затем вызовите open(), чтобы активировать физическое подключение к базе данных. Соединение недоступно до тех пор, пока вы его не откроете.

Определенное выше соединение будет соединением по умолчанию, потому что мы не передавали имя соединения функции addDatabase(). Впоследствии вы можете получить соединение по умолчанию, вызвав database() без аргумента имени соединения:

    QSqlDatabase db = QSqlDatabase::database();

QSqlDatabase — это класс значений. Изменения, внесенные в соединение с базой данных через один экземпляр QSqlDatabase, повлияют на другие экземпляры QSqlDatabase, которые представляют то же самое соединение. Используйте cloneDatabase(), чтобы создать независимое соединение с базой данных, основанное на существующем.

Предупреждение: Сильно рекомендуется не хранить копию QSqlDatabase в качестве члена класса, так как это помешает правильному удалению экземпляра при завершении работы. Если вам нужно получить доступ к существующему QSqlDatabase, нужно обращаться к нему с помощью database(). Если вы решили иметь переменную-член QSqlDatabase, она должна быть удалена перед удалением экземпляра QCoreApplication, иначе это может привести к неопределенному поведению.

Если вы создаете несколько соединений с базами данных, укажите уникальное имя соединения для каждого из них при вызове addDatabase(). Используйте database() с именем соединения для получения этого соединения. Используйте removeDatabase() с именем соединения, чтобы удалить соединение. QSqlDatabase выводит предупреждение, если вы пытаетесь удалить соединение, на которое ссылаются другие объекты QSqlDatabase. Используйте contains(), чтобы увидеть, есть ли заданное имя соединения в списке соединений.

Некоторые служебные методы:
tables() возвращает список таблиц
primaryIndex() возвращает первичный индекс таблицы
record() возвращает метаинформацию о полях таблицы
transaction() инициализирует транзакцию
commit() сохраняет и завершает транзакцию
rollback() отменяет транзакцию
hasFeature() проверяет, поддерживает ли драйвер транзакции
lastError() возвращает информацию об последней ошибке
drivers() возвращает имена доступных SQL-драйверов
isDriverAvailable() проверяет доступность конкретного драйвера
registerSqlDriver() регистрирует пользовательский драйвер

Примечание: QSqlDatabase::exec() устарел. Используйте QSqlQuery::exec() вместо этого.

Примечание: При использовании транзакций необходимо начать транзакцию до создания запроса.

См. также QSqlDriver, QSqlQuery, Qt SQL и Модуль потоков и модуль SQL.

Документация по функциям-членам

[protected] QSqlDatabase::QSqlDatabase(QSqlDriver *driver)

Это перегруженная функция.

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

[protected] QSqlDatabase::QSqlDatabase(const QString &type)

Это перегруженная функция.

Создает соединение QSqlDatabase, которое использует драйвер, указанный в type. Если type не распознан, соединение базы данных не будет функциональным.

Доступные типы драйверов:

Тип драйвера Описание
QDB2 IBM DB2
QIBASE Borland InterBase Driver
QMYSQL Драйвер MySQL
QOCI Oracle Call Interface Driver
QODBC Драйвер ODBC (включает Microsoft SQL Server)
QPSQL Драйвер PostgreSQL
QSQLITE SQLite версии 3 или выше
QSQLITE2 SQLite версии 2
QTDS Sybase Adaptive Server

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

См. также SQL Database Drivers, registerSqlDriver() и drivers().

QSqlDatabase::QSqlDatabase(const QSqlDatabase &other)

Создает копию other.

QSqlDatabase::QSqlDatabase()

Создает пустой, недействительный объект QSqlDatabase. Используйте addDatabase(), removeDatabase() и database() для получения действительных объектов QSqlDatabase.

QSqlDatabase &QSqlDatabase::operator=(const QSqlDatabase &other)

Присваивает other этому объекту.

QSqlDatabase::~QSqlDatabase()

Удаляет объект и освобождает все выделенные ресурсы.

Примечание: Когда последнее соединение уничтожается, деструктор неявно вызывает close() для освобождения соединения с базой данных.

См. также close().

[static] QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName = QLatin1String(defaultConnection))

Добавляет базу данных в список соединений с базой данных, используя драйвер type и имя соединения connectionName. Если уже существует соединение с базой данных с именем connectionName, это соединение удаляется.

Соединение с базой данных обозначается именем connectionName. Возвращается вновь добавленное соединение с базой данных.

Если type недоступен или не может быть загружен, isValid() возвращает false.

Если connectionName не указан, новое соединение становится соединением по умолчанию для приложения, и последующие вызовы database() без аргумента имени соединения вернут соединение по умолчанию. Если connectionName указан, используйте database(connectionName) для получения соединения.

Предупреждение: Если вы добавляете соединение с тем же именем, что и существующее соединение, новое соединение заменяет старое. Если вы вызываете эту функцию более одного раза без указания connectionName, соединение по умолчанию будет заменено.

Перед использованием соединения его необходимо инициализировать. Например, вызовите некоторые или все из setDatabaseName(), setUserName(), setPassword(), setHostName(), setPort() и setConnectOptions(), а затем open().

Примечание: Эта функция безопасна для многопоточного доступа.

См. также database(), removeDatabase() и Модуль потоков и модуль SQL.

[static] QSqlDatabase QSqlDatabase::addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String(defaultConnection))

Этот перегруз полезен, когда нужно создать подключение к базе данных с драйвером, который вы инициализировали сами. Это может быть ваш собственный драйвер базы данных, или вам просто нужно инициализировать один из драйверов Qt самостоятельно. Если вы делаете это, рекомендуется включать код драйвера в ваше приложение. Например, вы можете создать подключение PostgreSQL с вашим собственным драйвером QPSQL следующим образом:

#include "qtdir/src/sql/drivers/psql/qsql_psql.cpp"

PGconn *con = PQconnectdb("host=server user=bart password=simpson dbname=springfield");
QPSQLDriver *drv =  new QPSQLDriver(con);
QSqlDatabase db = QSqlDatabase::addDatabase(drv); // becomes the new default connection
QSqlQuery query;
query.exec("SELECT NAME, ID FROM STAFF");
...

Вышеприведенный код настраивает подключение к PostgreSQL и инициализирует объект QPSQLDriver. Затем вызывается addDatabase(), чтобы добавить подключение к известным подключениям, чтобы его можно было использовать классами Qt SQL. Когда драйвер инициализируется с дескриптором подключения (или набором дескрипторов), Qt предполагает, что вы уже открыли подключение к базе данных.

Примечание: Мы предполагаем, что qtdir — это каталог, где установлен Qt. Это загрузит код, необходимый для использования библиотеки клиента PostgreSQL и для инициализации объекта QPSQLDriver, при условии, что у вас есть заголовки PostgreSQL где-то в вашем пути поиска включений.

Помните, что вы должны связать свое приложение с библиотекой клиента базы данных. Убедитесь, что библиотека клиента находится в пути поиска вашего компоновщика и добавьте такие строки в свой файл .pro:

unix:LIBS += -lpq
win32:LIBS += libpqdll.lib

Описанный метод работает для всех предоставленных драйверов. Единственным отличием будут аргументы конструктора драйвера. Вот таблица драйверов, включенных в Qt, их исходных файлов и аргументов конструктора:

Драйвер Имя класса Аргументы конструктора Файл для включения
QPSQL QPSQLDriver PGconn *connection qsql_psql.cpp
QMYSQL QMYSQLDriver MYSQL *connection qsql_mysql.cpp
QOCI QOCIDriver OCIEnv *environment, OCISvcCtx *serviceContext qsql_oci.cpp
QODBC QODBCDriver SQLHANDLE environment, SQLHANDLE connection qsql_odbc.cpp
QDB2 QDB2 SQLHANDLE environment, SQLHANDLE connection qsql_db2.cpp
QTDS QTDSDriver LOGINREC *loginRecord, DBPROCESS *dbProcess, const QString &hostName qsql_tds.cpp
QSQLITE QSQLiteDriver sqlite *connection qsql_sqlite.cpp
QIBASE QIBaseDriver isc_db_handle connection qsql_ibase.cpp

Имя хоста (или имя службы) требуется при построении QTDSDriver для создания новых подключений для внутренних запросов. Это предотвращает блокировку при одновременном использовании нескольких объектов QSqlQuery.

Предупреждение: Добавление подключения к базе данных с тем же именем подключения, что и существующее подключение, приводит к замене существующего подключения новым.

Предупреждение: Фреймворк SQL получает во владение драйвер. Его нельзя удалять. Чтобы удалить подключение, используйте removeDatabase().

См. также drivers().

[static] QSqlDatabase QSqlDatabase::cloneDatabase(const QSqlDatabase &other, const QString &connectionName)

Создает копию подключения к базе данных other и сохраняет ее как connectionName. Все настройки из исходной базы данных, например databaseName(), hostName() и т.д., копируются. Ничего не делает, если other — это недопустимая база данных. Возвращает вновь созданное подключение к базе данных.

Примечание: Новое подключение не открыто. Перед использованием нового подключения необходимо вызвать open().

[static] QSqlDatabase QSqlDatabase::cloneDatabase(const QString &other, const QString &connectionName)

Это перегруженный метод.

Создает копию подключения к базе данных other и сохраняет ее как connectionName. Все настройки из исходной базы данных, например databaseName(), hostName() и т.д., копируются. Ничего не делает, если other — это недопустимая база данных. Возвращает вновь созданное подключение к базе данных.

Примечание: Новое подключение не открыто. Перед использованием нового подключения необходимо вызвать open().

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

Функция была добавлена в Qt 5.13.

void QSqlDatabase::close()

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

Это также повлияет на копии этого объекта QSqlDatabase.

См. также removeDatabase().

bool QSqlDatabase::commit()

Подтверждает транзакцию в базе данных, если драйвер поддерживает транзакции и была запущена транзакция transaction(). Возвращает true в случае успешного выполнения операции. В противном случае возвращает false.

Примечание: Для некоторых баз данных подтверждение транзакции может завершиться неудачей и вернуть false если активен запрос, использующий базу данных для SELECT. Сделайте запрос неактивным перед выполнением подтверждения.

Вызовите lastError(), чтобы получить информацию об ошибках.

См. также QSqlQuery::isActive(), QSqlDriver::hasFeature() и rollback().

QString QSqlDatabase::connectOptions() const

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

См. также setConnectOptions().

QString QSqlDatabase::connectionName() const

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

Примечание: Имя подключения не является именем базы данных.

Функция была добавлена в Qt 4.4.

См. также addDatabase().

[static] QStringList QSqlDatabase::connectionNames()

Возвращает список, содержащий имена всех подключений.

Примечание: Эта функция безопасна для многопоточного доступа.

См. также contains(), database() и Потоки и модуль SQL.

[static] bool QSqlDatabase::contains(const QString &connectionName = QLatin1String(defaultConnection))

Возвращает true если список подключений к базам данных содержит connectionName, в противном случае возвращает false.

Примечание: Эта функция безопасна для многопоточного доступа.

См. также connectionNames(), database() и Потоки и модуль SQL.

[static] QSqlDatabase QSqlDatabase::database(const QString &connectionName = QLatin1String(defaultConnection), bool open = true)

Возвращает подключение к базе данных с именем connectionName. Подключение к базе данных должно быть добавлено предварительно с помощью addDatabase(). Если open равно true (по умолчанию) и подключение к базе данных еще не открыто, оно будет открыто сейчас. Если connectionName не указан, используется имя по умолчанию. Если connectionName не существует в списке баз данных, возвращается недопустимое подключение.

Примечание: Эта функция безопасна для многопоточного доступа.

См. также isOpen() и Потоки и модуль SQL.

QString QSqlDatabase::databaseName() const

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

Примечание: Имя базы данных не является именем подключения.

См. также setDatabaseName().

QSqlDriver *QSqlDatabase::driver() const

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

См. также addDatabase() и drivers().

QString QSqlDatabase::driverName() const

Возвращает имя драйвера подключения.

См. также addDatabase() и driver().

[static] QStringList QSqlDatabase::drivers()

Возвращает список всех доступных драйверов баз данных.

См. также registerSqlDriver().

QSqlQuery QSqlDatabase::exec(const QString &query = QString()) const

Выполняет SQL-запрос на базе данных и возвращает объект QSqlQuery. Используйте lastError(), чтобы получить информацию об ошибке. Если query пусто, возвращается пустой, недействительный запрос, и lastError() не затрагивается.

См. также QSqlQuery и lastError().

QString QSqlDatabase::hostName() const

Возвращает имя хоста соединения; может быть пустым.

См. также setHostName().

[static] bool QSqlDatabase::isDriverAvailable(const QString &name)

Возвращает true, если драйвер с именем name доступен; в противном случае возвращает false.

См. также drivers().

bool QSqlDatabase::isOpen() const

Возвращает true, если подключение к базе данных в настоящее время открыто; в противном случае возвращает false.

bool QSqlDatabase::isOpenError() const

Возвращает true, если при открытии подключения к базе данных произошла ошибка; в противном случае возвращает false. Информацию об ошибке можно получить с помощью функции lastError().

bool QSqlDatabase::isValid() const

Возвращает true, если у QSqlDatabase есть действительный драйвер.

Пример:

QSqlDatabase db;
qDebug() << db.isValid();    // Returns false

db = QSqlDatabase::database("sales");
qDebug() << db.isValid();    // Returns \c true if "sales" connection exists

QSqlDatabase::removeDatabase("sales");
qDebug() << db.isValid();    // Returns false

QSqlError QSqlDatabase::lastError() const

Возвращает информацию о последней ошибке, произошедшей в базе данных.

Ошибки, возникающие в связи с отдельным запросом, сообщаются функцией QSqlQuery::lastError().

См. также QSqlError и QSqlQuery::lastError().

QSql::NumericalPrecisionPolicy QSqlDatabase::numericalPrecisionPolicy() const

Возвращает текущую политику точности для подключения к базе данных.

Эта функция была добавлена в Qt 4.6.

См. также QSql::NumericalPrecisionPolicy, setNumericalPrecisionPolicy(), QSqlQuery::numericalPrecisionPolicy(), и QSqlQuery::setNumericalPrecisionPolicy().

bool QSqlDatabase::open()

Открывает подключение к базе данных, используя текущие значения подключения. Возвращает true при успехе; в противном случае возвращает false. Информацию об ошибке можно получить с помощью lastError().

См. также lastError(), setDatabaseName(), setUserName(), setPassword(), setHostName(), setPort(), и setConnectOptions().

bool QSqlDatabase::open(const QString &user, const QString &password)

Это перегруженная функция.

Открывает подключение к базе данных с указанным именем пользователя user и паролем password. Возвращает true при успехе; в противном случае возвращает false. Информацию об ошибке можно получить с помощью функции lastError().

Эта функция не сохраняет полученный пароль. Вместо этого пароль передаётся непосредственно драйверу для открытия соединения и затем удаляется.

См. также lastError().

QString QSqlDatabase::password() const

Возвращает пароль соединения. Пустая строка будет возвращена, если пароль не был задан с помощью setPassword(), и если пароль был передан в вызове open(), или если пароль не использовался.

См. также setPassword().

int QSqlDatabase::port() const

Возвращает номер порта соединения. Значение неопределено, если номер порта не был задан.

См. также setPort().

QSqlIndex QSqlDatabase::primaryIndex(const QString &tablename) const

Возвращает первичный индекс для таблицы tablename. Если первичный индекс не существует, возвращается пустой QSqlIndex.

Примечание: Некоторые драйверы, такие как драйвер QPSQL, могут потребовать, чтобы вы передавали tablename в нижнем регистре, если таблица не была обрамлена кавычками при создании. См. документацию по драйверу Qt SQL для получения дополнительной информации.

См. также tables() и record().

QSqlRecord QSqlDatabase::record(const QString &tablename) const

Возвращает QSqlRecord, заполненный именами всех полей в таблице (или представлении) с именем tablename. Порядок появления полей в записи не определён. Если такая таблица (или представление) не существует, возвращается пустая запись.

Примечание: Некоторые драйверы, такие как драйвер QPSQL, могут потребовать, чтобы вы передавали tablename в нижнем регистре, если таблица не была обрамлена кавычками при создании. См. документацию по драйверу Qt SQL для получения дополнительной информации.

[static] void QSqlDatabase::registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator)

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

Пример:

QSqlDatabase::registerSqlDriver("MYDRIVER",
                                new QSqlDriverCreator<MyDatabaseDriver>);
QSqlDatabase db = QSqlDatabase::addDatabase("MYDRIVER");

QSqlDatabase получает владение указателем creator, поэтому вы не должны удалять его самостоятельно.

См. также drivers().

[static] void QSqlDatabase::removeDatabase(const QString &connectionName)

Удаляет подключение к базе данных connectionName из списка подключений к базам данных.

Предупреждение: При вызове этой функции не должно быть открытых запросов к базе данных, иначе произойдёт утечка ресурсов.

Пример:

// WRONG
QSqlDatabase db = QSqlDatabase::database("sales");
QSqlQuery query("SELECT NAME, DOB FROM EMPLOYEES", db);
QSqlDatabase::removeDatabase("sales"); // will output a warning

// "db" is now a dangling invalid database connection,
// "query" contains an invalid result set

Правильный способ сделать это:

{
    QSqlDatabase db = QSqlDatabase::database("sales");
    QSqlQuery query("SELECT NAME, DOB FROM EMPLOYEES", db);
}
// Both "db" and "query" are destroyed because they are out of scope
QSqlDatabase::removeDatabase("sales"); // correct

Чтобы удалить стандартное подключение, которое, возможно, было создано с помощью вызова addDatabase() без указания имени подключения, можно получить имя стандартного подключения, вызвав connectionName() на базе данных, возвращённой database(). Обратите внимание, что если стандартная база данных не была создана, будет возвращена недействительная база данных.

Примечание: Эта функция безопасна для использования в нескольких потоках.

См. также database(), connectionName(), и Потоки и модуль SQL.

bool QSqlDatabase::rollback()

Откатывает транзакцию в базе данных, если драйвер поддерживает транзакции и была начата транзакция с помощью transaction(). Возвращает true если операция выполнена успешно. В противном случае возвращает false.

Примечание: Для некоторых баз данных откат завершится ошибкой и вернёт false если существует активный запрос, использующий базу данных для SELECT. Сделайте запрос неактивным перед выполнением отката.

Вызовите lastError(), чтобы получить информацию об ошибках.

См. также QSqlQuery::isActive(), QSqlDriver::hasFeature(), и commit().

void QSqlDatabase::setConnectOptions(const QString &options = QString())

Устанавливает параметры базы данных options. Это должно быть сделано до открытия подключения, в противном случае это не повлияет. Другой вариант - закрыть подключение, вызвать QSqlDatabase::setConnectOptions() и снова открыть подключение с помощью open().

Формат строки options - это список параметров, разделённых точкой с запятой, или пары параметр=значение. Параметры зависят от используемого клиента базы данных:

ODBC MySQL PostgreSQL
  • SQL_ATTR_ACCESS_MODE
  • SQL_ATTR_LOGIN_TIMEOUT
  • SQL_ATTR_CONNECTION_TIMEOUT
  • SQL_ATTR_CURRENT_CATALOG
  • SQL_ATTR_METADATA_ID
  • SQL_ATTR_PACKET_SIZE
  • SQL_ATTR_TRACEFILE
  • SQL_ATTR_TRACE
  • SQL_ATTR_CONNECTION_POOLING
  • SQL_ATTR_ODBC_VERSION
  • CLIENT_COMPRESS
  • CLIENT_FOUND_ROWS
  • CLIENT_IGNORE_SPACE
  • CLIENT_ODBC
  • CLIENT_NO_SCHEMA
  • CLIENT_INTERACTIVE
  • UNIX_SOCKET
  • MYSQL_OPT_RECONNECT
  • MYSQL_OPT_CONNECT_TIMEOUT
  • MYSQL_OPT_READ_TIMEOUT
  • MYSQL_OPT_WRITE_TIMEOUT
  • SSL_KEY
  • SSL_CERT
  • SSL_CA
  • SSL_CAPATH
  • SSL_CIPHER
  • connect_timeout
  • options
  • tty
  • requiressl
  • service
DB2 OCI TDS
  • SQL_ATTR_ACCESS_MODE
  • SQL_ATTR_LOGIN_TIMEOUT
  • OCI_ATTR_PREFETCH_ROWS
  • OCI_ATTR_PREFETCH_MEMORY
none
SQLite Interbase
  • QSQLITE_BUSY_TIMEOUT
  • QSQLITE_OPEN_READONLY
  • QSQLITE_OPEN_URI
  • QSQLITE_ENABLE_SHARED_CACHE
  • QSQLITE_ENABLE_REGEXP
  • ISC_DPB_LC_CTYPE
  • ISC_DPB_SQL_ROLE_NAME

Примеры:

...
// MySQL connection
db.setConnectOptions("SSL_KEY=client-key.pem;SSL_CERT=client-cert.pem;SSL_CA=ca-cert.pem;CLIENT_IGNORE_SPACE=1"); // use an SSL connection to the server
if (!db.open()) {
    db.setConnectOptions(); // clears the connect option string
    ...
}
...
// PostgreSQL connection
db.setConnectOptions("requiressl=1"); // enable PostgreSQL SSL connections
if (!db.open()) {
    db.setConnectOptions(); // clear options
    ...
}
...
// ODBC connection
db.setConnectOptions("SQL_ATTR_ACCESS_MODE=SQL_MODE_READ_ONLY;SQL_ATTR_TRACE=SQL_OPT_TRACE_ON"); // set ODBC options
if (!db.open()) {
    db.setConnectOptions(); // don't try to set this option
    ...
}

Дополнительную информацию о различных параметрах см. в документации клиентской библиотеки.

См. также connectOptions().

void QSqlDatabase::setDatabaseName(const QString &name)

Устанавливает имя базы данных соединения на name. Для применения изменения, имя базы данных должно быть установлено до подключения к базе данных. В качестве альтернативы можно закрыть подключение, установить имя базы данных и снова вызвать open().

Примечание: Имя базы данных не является именем соединения. Имя соединения должно быть передано в addDatabase() во время создания объекта подключения.

Для драйвера QSQLITE, если указанное имя базы данных не существует, то он создаст файл для вас, если не установлен параметр QSQLITE_OPEN_READONLY.

Кроме того, name можно установить в ":memory:" , что создаст временную базу данных, доступную только в течение времени существования приложения.

Для драйвера QOCI (Oracle) имя базы данных — это имя службы TNS.

Для драйвера QODBC name может быть либо именем DSN, либо именем файла DSN (в этом случае файл должен иметь расширение .dsn), либо строкой подключения.

Например, пользователи Microsoft Access могут использовать следующую строку подключения для открытия файла .mdb напрямую, вместо того, чтобы создавать запись DSN в менеджере ODBC:

...
db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=myaccessfile.mdb");
if (db.open()) {
    // success!
}
...

Значение по умолчанию отсутствует.

См. также databaseName(), setUserName(), setPassword(), setHostName(), setPort(), setConnectOptions() и open().

void QSqlDatabase::setHostName(const QString &host)

Устанавливает имя хоста соединения на host. Для применения изменения, имя хоста должно быть установлено до подключения к базе данных. В качестве альтернативы можно закрыть подключение, установить имя хоста и снова вызвать open().

Значение по умолчанию отсутствует.

См. также hostName(), setUserName(), setPassword(), setDatabaseName(), setPort(), setConnectOptions() и open().

void QSqlDatabase::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy)

Устанавливает политику точности числовых значений по умолчанию для запросов, созданных на этом подключении к базе данных, на precisionPolicy.

Примечание: драйверы, не поддерживающие получение числовых значений с низкой точностью, проигнорируют политику точности. Используйте QSqlDriver::hasFeature(), чтобы узнать, поддерживает ли драйвер эту функцию.

Примечание: установка политики точности по умолчанию на precisionPolicy не влияет на текущие активные запросы.

Функция была добавлена в Qt 4.6.

См. также QSql::NumericalPrecisionPolicy, numericalPrecisionPolicy(), QSqlQuery::setNumericalPrecisionPolicy() и QSqlQuery::numericalPrecisionPolicy().

void QSqlDatabase::setPassword(const QString &password)

Устанавливает пароль соединения на password. Для применения изменения, пароль должен быть установлен до подключения к базе данных. В качестве альтернативы можно закрыть подключение, установить пароль и снова вызвать open().

Значение по умолчанию отсутствует.

Предупреждение: Эта функция сохраняет пароль в виде обычного текста в Qt. Используйте вызов open() с параметром пароля, чтобы избежать этого.

См. также password(), setUserName(), setDatabaseName(), setHostName(), setPort(), setConnectOptions() и open().

void QSqlDatabase::setPort(int port)

Устанавливает номер порта соединения на port. Для применения изменения, номер порта должен быть установлен до подключения к базе данных. В качестве альтернативы можно закрыть подключение, установить номер порта и снова вызвать open().

Значение по умолчанию отсутствует.

См. также port(), setUserName(), setPassword(), setHostName(), setDatabaseName(), setConnectOptions() и open().

void QSqlDatabase::setUserName(const QString &name)

Устанавливает имя пользователя соединения на name. Для применения изменения, имя пользователя должно быть установлено до подключения к базе данных. В качестве альтернативы можно закрыть подключение, установить имя пользователя и снова вызвать open().

Значение по умолчанию отсутствует.

См. также userName(), setDatabaseName(), setPassword(), setHostName(), setPort(), setConnectOptions() и open().

QStringList QSqlDatabase::tables(QSql::TableType type = QSql::Tables) const

Возвращает список таблиц базы данных, системных таблиц и представлений, как указано параметром type.

См. также primaryIndex() и record().

bool QSqlDatabase::transaction()

Начинает транзакцию в базе данных, если драйвер поддерживает транзакции. Возвращает true если операция выполнена успешно. В противном случае возвращает false.

См. также QSqlDriver::hasFeature(), commit() и rollback().

QString QSqlDatabase::userName() const

Возвращает имя пользователя соединения; может быть пустым.

См. также setUserName().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qsqldatabase.html

Spec-Zone.ru

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