Spec-Zone.ru › Qt 5.11

Класс 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
QSqlResult::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 предоставляет оболочку общего назначения для баз данных.

Если вы реализуете свой собственный драйвер 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] QSqlResult::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, если результат ещё не был выполнен.

Предупреждение: PostgreSQL: в режиме forward-only ручка QSqlResult может измениться после вызова fetch(), fetchFirst(), fetchLast(), fetchNext(), fetchPrevious(), nextResult().

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

Этот пример получает ручку для результата 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)

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

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

[virtual protected] QSqlRecord QSqlResult::record() const

Возвращает текущую запись, если запрос активен; в противном случае возвращает пустую QSqlRecord.

Реализация по умолчанию всегда возвращает пустую QSqlRecord.

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

[pure virtual protected] bool QSqlResult::reset(const QString &query)

Устанавливает результат для использования SQL-оператора query для последующего извлечения данных.

Производные классы должны переопределить эту функцию и применить query к базе данных. Эта функция вызывается только после того, как результат установлен в неактивное состояние и расположен перед первой записью нового результата. Производные классы должны вернуть true, если запрос выполнился успешно и готов к использованию, или false в противном случае.

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

[protected] void QSqlResult::resetBindCount()

Сбрасывает количество параметров связывания.

[virtual protected] bool QSqlResult::savePrepare(const QString &query)

Подготавливает заданный 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() для навигации по результатам. Режим только вперёд требует намного меньше памяти, так как результаты не нужно кэшировать. По умолчанию эта функция отключена.

Установка режима только вперёд в значение false является рекомендацией для движка базы данных, который имеет последнее слово в отношении того, является ли набор результатов только вперёд или прокручиваемым. isForwardOnly() всегда будет возвращать правильный статус набора результатов.

Примечание: Вызов setForwardOnly после выполнения запроса в лучшем случае приведёт к неожиданным результатам, а в худшем — к сбою.

Примечание: Чтобы убедиться, что запрос только вперёд завершился успешно, приложение должно проверить lastError() на наличие ошибки не только после выполнения запроса, но и после навигации по результатам запроса.

Предупреждение: PostgreSQL: Во время навигации по результатам запроса в режиме только вперёд не выполняйте другие SQL-команды в том же соединении с базой данных. Это приведёт к потере результатов запроса.

См. также 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.11/qsqlresult.html

Spec-Zone.ru

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