QSqlResult Class

QSqlResult クラスは、特定の SQL データベースからデータにアクセスするための抽象インターフェイスを提供します。詳細...

ヘッダ #include <QSqlResult>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
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
QStringList boundValueNames() const
QVariantList boundValues() const
QVariantList &boundValues()
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 QSqlQuery は QSqlResult のデータベース固有の実装に対する汎用ラッパーを提供するからです。

独自の SQL ドライバを (QSqlDriver をサブクラス化して) 実装する場合は、必要なすべての純粋仮想関数とその他の仮想関数を実装する独自の QSqlResult サブクラスを提供する必要があります。

QSqlDriverも参照してください

メンバ型ドキュメント

enum QSqlResult::BindingSyntax

この列挙型は、プリペアド・クエリでプレースホルダを指定するための様々な構文を指定します。

定数説明
QSqlResult::PositionalBinding0プレースホルダとして "?" を使用する ODBC 形式の位置指定構文を使用します。
QSqlResult::NamedBinding1Oracle 形式の構文を使用し、":id" をプレースホルダとして使用します。

bindingSyntax()も参照してください

メンバ関数のドキュメント

[explicit protected] QSqlResult::QSqlResult(const QSqlDriver *db)

データベース・ドライバdb を使用して QSqlResult を作成します。オブジェクトは非アクティブ状態に初期化されます。

isActive() およびdriver()も参照してください

[virtual noexcept] QSqlResult::~QSqlResult()

オブジェクトを破棄し、割り当てられたリソースを解放する。

[protected] void QSqlResult::addBindValue(const QVariant &val, QSql::ParamType paramType)

パラメータ型paramType の値val を、現在のレコード(行)の次に利用可能な位置にバインドする。

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)

パラメータ型paramType の値val を、現在のレコード(行)の位置index にバインドする。

addBindValue()も参照のこと

[virtual protected] void QSqlResult::bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)

これはオーバーロードされた関数である。

パラメータ型paramType の値val を、現在のレコード(行)の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() およびboundValueNames()も参照

[protected] QStringList QSqlResult::boundValueNames() const

すべてのバインドされた値の名前を返します。

boundValue() およびboundValueName()も参照

[protected] QVariantList QSqlResult::boundValues() const

現在のレコード (行) に対する結果の境界値のリストを返します。

boundValueCount()も参照ください

[protected] QVariantList &QSqlResult::boundValues()

これはオーバーロードされた関数である。

現在のレコード(行)に対する結果の境界値のリストへの変更可能な参照を返します。

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になる可能性があります。

警告: 結果がまだ実行されていない場合、ハンドルはNULLになる可能性があります: PostgreSQL: 順方向のみのモードでは、fetch(),fetchFirst(),fetchLast(),fetchNext(),fetchPrevious(), nextResult() を呼び出した後、QSqlResult のハンドルが変更される可能性があります。

ここで返されるハンドルはデータベースに依存しているので、アクセスする前にバリアントの型名を問い合わせる必要があります。

この例は 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

クエリのバウンド値の少なくとも1つがQSql::Out またはQSql::InOut であればtrue を返し、そうでなければ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)

現在の行の位置index にあるフィールドが NULL の場合はtrue を返し、そうでない場合はfalse を返す。

[protected] bool QSqlResult::isSelect() const

現在の結果がSELECT ステートメントのものであればtrue を返し、そうでなければfalse を返す。

setSelect()も参照のこと

[protected] bool QSqlResult::isValid() const

結果が有効なレコード上に配置されている(つまり、結果が最初のレコードの前や最後のレコードの後に配置されていない)場合はtrue を返し、そうでない場合はfalse を返す。

at()も参照のこと

[protected] QSqlError QSqlResult::lastError() const

結果に関連する最後のエラーを返します。

setLastError()も参照

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

データベースがサポートしていれば、最近挿入された行のオブジェクト ID を返します。クエリが値を挿入しなかったり、データベースが ID を返さなかったりした場合は、無効なQVariant が返されます。複数の行が挿入された場合の動作は未定義です。

Oracle データベースの場合は行の ROWID が返され、MySQL データベースの場合は行のオートインクリメントフィールドが返されることに注意してください。

QSqlDriver::hasFeature()も参照

[protected] QString QSqlResult::lastQuery() const

現在の SQL クエリ・テキストを返します。

setQuery()も参照 ください。

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

最後に実行されたクエリによって影響を受けた行の数を返します。クエリが決まらなかったり、SELECT 文の場合は -1。

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

forward onlyをfalseに設定することはデータベースエンジンへの提案であり、結果セットをforward onlyにするかscrollableにするかの最終決定はデータベースエンジンが行います。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)

この関数は派生クラスに対して提供され、現在の文がSQLSELECT 文であるかどうかを示します。ステートメントがSELECT ステートメントである場合、select パラメータは真でなければなりません。そうでない場合は偽でなければなりません。

isSelect()も参照してください

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

SELECT の結果のサイズを返します。サイズがわからない場合や、クエリがSELECT 文でない場合は -1 を返します。

numRowsAffected()も参照のこと

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.