Класс QSqlResult
Класс QSqlResult предоставляет абстрактный интерфейс для доступа к данным из конкретных баз данных SQL. Подробнее...
| Заголовок: | #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 |
| 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 |
Подробное описание
Класс QSqlResult предоставляет абстрактный интерфейс для доступа к данным из конкретных баз данных SQL.
Обычно вы используете 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] 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)
Подготавливает заданный 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(). Режим только вперёд требует гораздо меньше памяти, так как результаты не нужно кешировать. По умолчанию эта функция отключена.
Установка 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/qt-5.9/qsqlresult.html