Spec-Zone.ru › Qt 5.12

Класс QSqlResult

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

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

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

virtual ~QSqlResult()
virtual QVariant handle() const

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

перечисление 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
QVector<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

Защищенные переменные

QSqlResultPrivate * d_ptr

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

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

Обычно вместо класса QSqlResult используется QSqlQuery, поскольку 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 в текущей записи (строке).

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

См. также 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, если нет ручки.

Предупреждение: Используйте с осторожностью и только если знаете, что делаете.

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

END_OF_DOCUMENT_MARKER

Предупреждение: Дескриптор может быть NULL, если результат ещё не был выполнен.

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

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

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

QSqlQuery query = ...
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 true, если хотя бы одно из связанных значений запроса является QSql::Out или QSql::InOut; в противном случае возвращает false false.

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

[protected] bool QSqlResult::isActive() const

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

[protected] bool QSqlResult::isForwardOnly() const

Возвращает true true, если можно прокручивать результат только вперёд; в противном случае возвращает false false.

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

[pure virtual protected] bool QSqlResult::isNull(int index)

Возвращает true true, если поле в позиции index в текущей строке имеет значение null; в противном случае возвращает false false.

[protected] bool QSqlResult::isSelect() const

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

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

[protected] bool QSqlResult::isValid() const

Возвращает true true, если результат расположен на корректной записи (то есть, результат не расположен перед первой или после последней записью); в противном случае возвращает false false.

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

[protected] QSqlError QSqlResult::lastError() const

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

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

[virtual protected] QVariant QSqlResult::lastInsertId() const

Возвращает идентификатор объекта последней вставленной строки, если база данных его поддерживает. Некорректный QVariant будет возвращён, если запрос не вставил никакого значения или если база данных не возвращает идентификатор. Если оператором INSERT было затронуто более одной строки, поведение не определено.

Обратите внимание, что для баз данных Oracle будет возвращен ROWID строки, а для баз данных MySQL — поле автоинкремента строки.

См. также QSqlDriver::hasFeature().

[protected] QString QSqlResult::lastQuery() const

Возвращает текст текущего SQL-запроса или пустую строку, если его нет.

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

[pure virtual protected] int QSqlResult::numRowsAffected()

Возвращает количество строк, затронутых последним выполненным запросом, или -1, если его невозможно определить или если запрос является SELECT оператором DDL.

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

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

Подготавливает заданный query для выполнения; запрос обычно использует плейсхолдеры, чтобы его можно было выполнять многократно. Возвращает true, если запрос успешно подготовлен; в противном случае возвращает false 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 true, если запрос успешно подготовлен; в противном случае возвращает false 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. Параметр select должен быть true, если оператор является SELECT оператором SELECT; в противном случае он должен быть false.

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

[pure virtual protected] int QSqlResult::size()

Возвращает размер SELECT набора результатов или -1, если его невозможно определить или если запрос не является SELECT оператором SELECT.

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

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

Spec-Zone.ru

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