Класс QSqlResult
Класс QSqlResult предоставляет абстрактный интерфейс для доступа к данным из конкретных баз данных SQL. Подробнее...
| Заголовок: | #include <QSqlResult> |
| qmake: | QT += sql |
Открытые функции
| виртуальный | ~QSqlResult() |
| виртуальный QVariant | handle() const |
Защищенные типы
| перечисление | BindingSyntax { PositionalBinding, NamedBinding } |
Защищенные функции
| QSqlResult(const QSqlDriver *db) | |
| void | addBindValue(const QVariant &val, QSql::ParamType paramType) |
| int | at() const |
| виртуальный void | bindValue(int index, const QVariant &val, QSql::ParamType paramType) |
| виртуальный void | bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType) |
| QSql::ParamType | bindValueType(int index) const |
| QSql::ParamType | bindValueType(const QString &placeholder) const |
| BindingSyntax | bindingSyntax() const |
| QVariant | boundValue(int index) const |
| QVariant | boundValue(const QString &placeholder) const |
| int | boundValueCount() const |
| QString | boundValueName(int index) const |
| QVector<QVariant> & | boundValues() const |
| void | clear() |
| виртуальный QVariant | data(int index) = 0 |
| const QSqlDriver * | driver() const |
| виртуальный bool | exec() |
| QString | executedQuery() const |
| виртуальный bool | fetch(int index) = 0 |
| виртуальный bool | fetchFirst() = 0 |
| виртуальный bool | fetchLast() = 0 |
| виртуальный bool | fetchNext() |
| виртуальный bool | fetchPrevious() |
| bool | hasOutValues() const |
| bool | isActive() const |
| bool | isForwardOnly() const |
| виртуальный bool | isNull(int index) = 0 |
| bool | isSelect() const |
| bool | isValid() const |
| QSqlError | lastError() const |
| виртуальный QVariant | lastInsertId() const |
| QString | lastQuery() const |
| виртуальный int | numRowsAffected() = 0 |
| виртуальный bool | prepare(const QString &query) |
| виртуальный QSqlRecord | record() const |
| виртуальный bool | reset(const QString &query) = 0 |
| void | resetBindCount() |
| виртуальный bool | savePrepare(const QString &query) |
| виртуальный void | setActive(bool active) |
| виртуальный void | setAt(int index) |
| виртуальный void | setForwardOnly(bool forward) |
| виртуальный void | setLastError(const QSqlError &error) |
| виртуальный void | setQuery(const QString &query) |
| виртуальный void | setSelect(bool select) |
| виртуальный int | size() = 0 |
Подробное описание
Класс QSqlResult предоставляет абстрактный интерфейс для доступа к данным из конкретных баз данных SQL.
Обычно вы используете QSqlQuery вместо QSqlResult, так как QSqlQuery предоставляет общий оберточный слой для баз данных, специфических реализаций QSqlResult.
Если вы реализуете собственный драйвер SQL (подклассом QSqlDriver), вам потребуется предоставить свой подкласс QSqlResult, который реализует все чисто виртуальные функции и другие виртуальные функции, которые вам необходимы.
См. также QSqlDriver.
Документация по типам членов
Перечисление QSqlResult::BindingSyntax
Это перечисление определяет различные синтаксические конструкции для указания плейсхолдеров в подготовленных запросах.
| Постоянная | Значение | Описание |
|---|---|---|
QSqlResult::PositionalBinding |
0 |
Используйте синтаксис позиционной привязки в стиле ODBC, с "?" в качестве плейсхолдеров. |
QSqlResult::NamedBinding |
1 |
Используйте синтаксис в стиле Oracle с именованными плейсхолдерами (например, ":id") |
См. также bindingSyntax().
Документация по функциям-членам
[protected] QSqlResult::QSqlResult(const QSqlDriver *db)
Создаёт объект QSqlResult с использованием драйвера базы данных db. Объект инициализируется в неактивном состоянии.
См. также isActive() и driver().
[virtual] QSqlResult::~QSqlResult()
Уничтожает объект и освобождает все выделенные ресурсы.
[protected] void QSqlResult::addBindValue(const QVariant &val, QSql::ParamType paramType)
Связывает значение val типа параметра paramType с следующим доступным положением в текущей записи (строке).
См. также bindValue().
[protected] int QSqlResult::at() const
Возвращает текущую позицию строки результата (с нуля). Может возвращать специальные значения QSql::BeforeFirstRow или QSql::AfterLastRow.
См. также setAt() и isValid().
[virtual protected] void QSqlResult::bindValue(int index, const QVariant &val, QSql::ParamType paramType)
Связывает значение val типа параметра paramType с позицией index в текущей записи (строке).
См. также addBindValue().
[virtual protected] void QSqlResult::bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
Это перегруженный метод.
Связывает значение val типа параметра paramType с именем placeholder в текущей записи (строке).
Примечание: Связывание неопределённого placeholder приведёт к неопределённому поведению.
См. также QSqlQuery::bindValue().
[protected] QSql::ParamType QSqlResult::bindValueType(int index) const
Возвращает тип параметра для значения, связанного в позиции index.
См. также boundValue().
[protected] QSql::ParamType QSqlResult::bindValueType(const QString &placeholder) const
Это перегруженный метод.
Возвращает тип параметра для значения, связанного с заданным именем placeholder.
[protected] BindingSyntax QSqlResult::bindingSyntax() const
Возвращает синтаксис связывания, используемый подготовленными запросами.
[protected] QVariant QSqlResult::boundValue(int index) const
Возвращает значение, связанное в позиции index в текущей записи (строке).
См. также bindValue() и boundValues().
[protected] QVariant QSqlResult::boundValue(const QString &placeholder) const
Это перегруженный метод.
Возвращает значение, связанное с заданным именем placeholder в текущей записи (строке).
См. также bindValueType().
[protected] int QSqlResult::boundValueCount() const
Возвращает количество связанных значений в результате.
См. также boundValues().
[protected] QString QSqlResult::boundValueName(int index) const
Возвращает имя связанного значения в позиции index в текущей записи (строке).
См. также boundValue().
[protected] QVector<QVariant> &QSqlResult::boundValues() const
Возвращает вектор связанных значений результата для текущей записи (строки).
См. также boundValueCount().
[protected] void QSqlResult::clear()
Очищает весь набор результатов и освобождает связанные ресурсы.
[pure virtual protected] QVariant QSqlResult::data(int index)
Возвращает данные поля index в текущей строке в виде QVariant. Эта функция вызывается только если результат активен, расположен на корректной записи и index неотрицателен. Производные классы должны переопределить эту функцию и вернуть значение поля index или QVariant(), если оно не может быть определено.
[protected] const QSqlDriver *QSqlResult::driver() const
Возвращает драйвер, связанный с результатом. Это объект, переданный в конструктор.
[virtual protected] bool QSqlResult::exec()
Выполняет запрос, возвращая true при успехе; в противном случае возвращает false.
См. также prepare().
[protected] QString QSqlResult::executedQuery() const
Возвращает запрос, который был фактически выполнен. Он может отличаться от переданного запроса, например, если использовались связанные значения с подготовленным запросом, а базовая система данных не поддерживает подготовленные запросы.
См. также exec() и setQuery().
[pure virtual protected] bool QSqlResult::fetch(int index)
Устанавливает результат на произвольную (с нуля) строку index.
Эта функция вызывается только если результат активен. Производные классы должны переопределить эту функцию, установить результат на строку index и вызвать setAt() с соответствующим значением. Вернуть true, чтобы указать на успех, или false, чтобы указать на ошибку.
См. также isActive(), fetchFirst(), fetchLast(), fetchNext() и fetchPrevious().
[pure virtual protected] bool QSqlResult::fetchFirst()
Устанавливает результат на первую запись (строка 0) в результате.
Эта функция вызывается только если результат активен. Производные классы должны переопределить эту функцию, установить результат на первую запись и вызвать setAt() с соответствующим значением. Вернуть true, чтобы указать на успех, или false, чтобы указать на ошибку.
См. также fetch() и fetchLast().
[pure virtual protected] bool QSqlResult::fetchLast()
Устанавливает результат на последнюю запись (последнюю строку) в результате.
Эта функция вызывается только если результат активен. Производные классы должны переопределить эту функцию, установить результат на последнюю запись и вызвать setAt() с соответствующим значением. Вернуть true, чтобы указать на успех, или false, чтобы указать на ошибку.
См. также fetch() и fetchFirst().
[virtual protected] bool QSqlResult::fetchNext()
Устанавливает результат на следующую доступную запись (строку) в результате.
Эта функция вызывается только если результат активен. Базовая реализация вызывает fetch() со следующим индексом. Производные классы могут переопределить эту функцию, установить результат на следующую запись другим способом и вызвать setAt() с соответствующим значением. Вернуть true, чтобы указать на успех, или false, чтобы указать на ошибку.
См. также fetch() и fetchPrevious().
[virtual protected] bool QSqlResult::fetchPrevious()
Устанавливает результат на предыдущую запись (строку) в результате.
Эта функция вызывается только если результат активен. Базовая реализация вызывает fetch() с предыдущим индексом. Производные классы могут переопределить эту функцию, установить результат на предыдущую запись другим способом и вызвать setAt() с соответствующим значением. Вернуть true, чтобы указать на успех, или false, чтобы указать на ошибку.
[virtual] QVariant QSqlResult::handle() const
Возвращает низкоуровневую ручку базы данных для этого набора результатов, обернутую в QVariant, или недействительную QVariant, если нет ручки.
Предупреждение: Используйте с большой осторожностью и только если вы знаете, что делаете.
Предупреждение: Возвращённая здесь ручка может стать устаревшей, если результат изменён (например, если вы его очистили).
Предупреждение: Ручка может быть NULL, если результат ещё не был выполнен.
Возвращённая здесь ручка зависит от базы данных, вы должны запросить имя типа варианта перед доступом к нему.
Этот пример извлекает ручку для результата sqlite:
QSqlQuery query = ...
QVariant v = query.result()->handle();
if (v.isValid() && qstrcmp(v.typeName(), "sqlite3_stmt*")) {
// v.data() returns a pointer to the handle
sqlite3_stmt *handle = *static_cast<sqlite3_stmt **>(v.data());
if (handle != 0) { // check that it is not NULL
...
}
} Этот фрагмент возвращает дескриптор для PostgreSQL или MySQL:
if (v.typeName() == "PGresult*") {
PGresult *handle = *static_cast<PGresult **>(v.data());
if (handle != 0) ...
}
if (v.typeName() == "MYSQL_STMT*") {
MYSQL_STMT *handle = *static_cast<MYSQL_STMT **>(v.data());
if (handle != 0) ...
} См. также QSqlDriver::handle().
[protected] bool QSqlResult::hasOutValues() const
Возвращает true если хотя бы одно из связанных значений запроса является QSql::Out или QSql::InOut; в противном случае возвращает false.
См. также bindValueType().
[protected] bool QSqlResult::isActive() const
Возвращает true если результат содержит записи для извлечения; в противном случае возвращает false.
[protected] bool QSqlResult::isForwardOnly() const
Возвращает true если вы можете прокручивать результат только вперёд; в противном случае возвращает false.
См. также setForwardOnly().
[pure virtual protected] bool QSqlResult::isNull(int index)
Возвращает true если поле в позиции index в текущей строке имеет значение NULL; в противном случае возвращает false.
[protected] bool QSqlResult::isSelect() const
Возвращает true если текущий результат получен из SELECT оператора; в противном случае возвращает false.
См. также setSelect().
[protected] bool QSqlResult::isValid() const
Возвращает true если результат расположен на корректной записи (то есть результат не расположен до первой или после последней записи); в противном случае возвращает false.
См. также at().
[protected] QSqlError QSqlResult::lastError() const
Возвращает последнюю ошибку, связанную с результатом.
См. также setLastError().
[virtual protected] QVariant QSqlResult::lastInsertId() const
Возвращает идентификатор объекта последней вставленной строки, если база данных его поддерживает. Недействительный QVariant будет возвращён, если запрос не вставил значение или база данных не сообщает идентификатор. Если вставкой затронуто более одной строки, поведение не определено.
Обратите внимание, что для баз данных Oracle возвращается ROWID строки, а для баз данных MySQL - поле автоинкремента строки.
См. также QSqlDriver::hasFeature().
[protected] QString QSqlResult::lastQuery() const
Возвращает текст текущего SQL-запроса или пустую строку, если его нет.
См. также setQuery().
[pure virtual protected] int QSqlResult::numRowsAffected()
Возвращает количество затронутых строк последним выполненным запросом или -1, если это невозможно определить или если запрос является SELECT оператором.
См. также size().
[virtual protected] bool QSqlResult::prepare(const QString &query)
Подготавливает заданный запрос к выполнению; запрос обычно использует плейсхолдеры, чтобы его можно было выполнять повторно. Возвращает true, если запрос успешно подготовлен; в противном случае возвращает false.
См. также exec().
[virtual protected] QSqlRecord QSqlResult::record() const
Возвращает текущую запись, если запрос активен; в противном случае возвращает пустой QSqlRecord.
Реализация по умолчанию всегда возвращает пустой QSqlRecord.
См. также isActive().
[pure virtual protected] bool QSqlResult::reset(const QString &query)
Устанавливает результат для использования SQL-оператора query для последующего извлечения данных.
Производные классы должны переопределить эту функцию и применить запрос к базе данных. Эта функция вызывается только после того, как результат установлен в неактивное состояние и расположен перед первой записью нового результата. Производные классы должны вернуть true, если запрос был успешным и готов к использованию, или false в противном случае.
См. также setQuery().
[protected] void QSqlResult::resetBindCount()
Сбрасывает количество параметров привязки.
[virtual protected] bool QSqlResult::savePrepare(const QString &query)
Подготавливает заданный запрос, используя функциональность базовой базы данных, где это возможно. Возвращает true если запрос успешно подготовлен; в противном случае возвращает false.
Примечание: этот метод должен был называться "safePrepare()".
См. также prepare().
[virtual protected] void QSqlResult::setActive(bool active)
Эта функция предназначена для производных классов для установки внутреннего активного состояния в active.
См. также isActive().
[virtual protected] void QSqlResult::setAt(int index)
Эта функция предназначена для производных классов для установки внутреннего (нумерация с нуля) положения строки в index.
См. также at().
[virtual protected] void QSqlResult::setForwardOnly(bool forward)
Устанавливает режим только вперёд в forward. Если forward равно true, разрешено только fetchNext() для навигации по результатам. Режим только вперёд требует гораздо меньше памяти, так как результаты не нужно кешировать. По умолчанию эта функция отключена.
Установка forwardOnly в false - это рекомендация для движка базы данных, который имеет последнее слово в отношении того, является ли результат набора данных только вперёд или прокручиваемым. isForwardOnly() всегда возвращает правильный статус набора результатов.
Примечание: Вызов setForwardOnly после выполнения запроса в лучшем случае приведёт к неожиданным результатам, а в худшем - к сбоям.
См. также isForwardOnly(), fetchNext() и QSqlQuery::setForwardOnly().
[virtual protected] void QSqlResult::setLastError(const QSqlError &error)
Эта функция предназначена для производных классов для установки последней ошибки в error.
См. также lastError().
[virtual protected] void QSqlResult::setQuery(const QString &query)
Устанавливает текущий запрос для результата в query. Вы должны вызвать reset() для выполнения запроса в базе данных.
См. также reset() и lastQuery().
[virtual protected] void QSqlResult::setSelect(bool select)
Эта функция предназначена для производных классов для указания того, является ли текущий оператор SQL SELECT оператором. Параметр select должен быть true, если оператор является SELECT оператором; в противном случае он должен быть false.
См. также isSelect().
[pure virtual protected] int QSqlResult::size()
Возвращает размер SELECT результата или -1, если это невозможно определить или если запрос не является SELECT оператором.
См. также numRowsAffected().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qsqlresult.html