Spec-Zone.ru › Qt 6.1

Класс QSqlResult

Класс QSqlResult предоставляет абстрактный интерфейс для доступа к данным из конкретных SQL баз данных. Подробнее...

Заголовок: #include <QSqlResult>
CMake: find_package(Qt6 COMPONENTS Sql REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql
  • Список всех членов, включая унаследованные члены

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

virtual ~QSqlResult()
virtual QVariant handle() const

Защищенные типы

enum BindingSyntax { PositionalBinding, NamedBinding }

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

QSqlResult(const QSqlDriver *db)
void addBindValue(const QVariant &val, QSql::ParamType paramType)
int at() const
virtual void bindValue(int index, const QVariant &val, QSql::ParamType paramType)
virtual 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
QList<QVariant> & boundValues() const
void clear()
virtual QVariant data(int index) = 0
const QSqlDriver * driver() const
virtual bool exec()
QString executedQuery() const
virtual bool fetch(int index) = 0
virtual bool fetchFirst() = 0
virtual bool fetchLast() = 0
virtual bool fetchNext()
virtual bool fetchPrevious()
bool hasOutValues() const
bool isActive() const
bool isForwardOnly() const
virtual bool isNull(int index) = 0
bool isSelect() const
bool isValid() const
QSqlError lastError() const
virtual QVariant lastInsertId() const
QString lastQuery() const
virtual int numRowsAffected() = 0
virtual bool prepare(const QString &query)
virtual QSqlRecord record() const
virtual bool reset(const QString &query) = 0
void resetBindCount()
virtual bool savePrepare(const QString &query)
virtual void setActive(bool active)
virtual void setAt(int index)
virtual void setForwardOnly(bool forward)
virtual void setLastError(const QSqlError &error)
virtual void setQuery(const QString &query)
virtual void setSelect(bool select)
virtual int size() = 0

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

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

Если вы реализуете свой собственный SQL-драйвер (путем наследования от QSqlDriver), вам потребуется предоставить свой собственный подкласс QSqlResult, который реализует все чисто виртуальные функции и другие виртуальные функции, которые вам необходимы.

См. также QSqlDriver.

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

enum 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 в текущей записи (строке).

Примечание: Связывание неопределённого плейсхолдера приведёт к неопределённому поведению.

См. также 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] QList<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: в режиме только для чтения, дескриптор QSqlResult может измениться после вызова fetch(), fetchFirst(), fetchLast(), fetchNext(), fetchPrevious(), nextResult().

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

В этом примере извлекается дескриптор результата sqlite:

QSqlDatabase db = QSqlDatabase::database("sales");
QSqlQuery query("SELECT NAME, DOB FROM EMPLOYEES", db);

QVariant v = query.result()->handle();
if (v.isValid() && qstrcmp(v.typeName(), "sqlite3_stmt*") == 0) {
    // v.data() returns a pointer to the handle
    sqlite3_stmt *handle = *static_cast<sqlite3_stmt **>(v.data());
    if (handle) {
        // ...
    }
}

Этот фрагмент возвращает дескриптор для PostgreSQL или MySQL:

if (qstrcmp(v.typeName(), "PGresult*") == 0) {
    PGresult *handle = *static_cast<PGresult **>(v.data());
    if (handle) {
        // ...
        }
}

if (qstrcmp(v.typeName(), "MYSQL_STMT*") == 0) {
    MYSQL_STMT *handle = *static_cast<MYSQL_STMT **>(v.data());
    if (handle) {
        // ...
        }
    }

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

Установка режима только для вперёд в ложное значение является рекомендацией для движка базы данных, который имеет последнее слово в отношении того, является ли результат набора только для вперёд или прокручиваемым. 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 должен быть истинным, если оператор является SELECT оператором; в противном случае он должен быть ложным.

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

Spec-Zone.ru

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