QSqlResult Class
Die Klasse „QSqlResult“ bietet eine abstrakte Schnittstelle für den Zugriff auf Daten aus bestimmten SQL-Datenbanken. Mehr...
| Header: | #include <QSqlResult> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Sql) target_link_libraries(mytarget PRIVATE Qt6::Sql) |
| qmake: | QT += sql |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QSqlResult ist Teil der Datenbankklassen.
Öffentliche Funktionen
| virtual | ~QSqlResult() |
| virtual QVariant | handle() const |
Geschützte Typen
| enum | BindingSyntax { PositionalBinding, NamedBinding } |
Geschützte Funktionen
| 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 |
Ausführliche Beschreibung
Normalerweise würden Sie „ QSqlQuery “ anstelle von „QSqlResult“ verwenden, da „ QSqlQuery “ einen generischen Wrapper für datenbankspezifische Implementierungen von „QSqlResult“ bereitstellt.
Wenn Sie einen eigenen SQL-Treiber implementieren (durch Unterklassenbildung von ` QSqlDriver`), müssen Sie eine eigene `QSqlResult`-Unterklasse bereitstellen, die alle rein virtuellen Funktionen sowie weitere virtuelle Funktionen implementiert, die Sie benötigen.
Siehe auch QSqlDriver.
Dokumentation zu Mitgliedstypen
enum QSqlResult::BindingSyntax
Dieser Enum-Typ legt die verschiedenen Syntaxvarianten für die Angabe von Platzhaltern in vorbereiteten Abfragen fest.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSqlResult::PositionalBinding | 0 | Verwenden Sie die positionsbasierte Syntax im ODBC-Stil mit „?“ als Platzhaltern. |
QSqlResult::NamedBinding | 1 | Verwende die Oracle-Syntax mit benannten Platzhaltern (z. B. „:id“) |
Siehe auch bindingSyntax().
Dokumentation zu Mitgliedsfunktionen
[explicit protected] QSqlResult::QSqlResult(const QSqlDriver *db)
Erstellt ein QSqlResult-Objekt unter Verwendung des Datenbanktreibers „ db “. Das Objekt wird in einem inaktiven Zustand initialisiert.
Siehe auch „ isActive()“ und „ driver()“.
[virtual noexcept] QSqlResult::~QSqlResult()
Löscht das Objekt und gibt alle zugewiesenen Ressourcen frei.
[protected] void QSqlResult::addBindValue(const QVariant &val, QSql::ParamType paramType)
Weist den Wert „ val “ vom Parametertyp „ paramType “ der nächsten verfügbaren Position im aktuellen Datensatz (Zeile) zu.
Siehe auch bindValue().
[protected] int QSqlResult::at() const
Gibt die aktuelle (nullbasierte) Zeilenposition des Ergebnisses zurück. Kann die Sonderwerte „ QSql::BeforeFirstRow “ oder „ QSql::AfterLastRow “ zurückgeben.
Siehe auch setAt() und isValid().
[virtual protected] void QSqlResult::bindValue(int index, const QVariant &val, QSql::ParamType paramType)
Bindet den Wert „ val “ vom Parametertyp „ paramType “ an die Position „ index “ im aktuellen Datensatz (Zeile).
Siehe auch addBindValue().
[virtual protected] void QSqlResult::bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType paramType)
Weist dem Namen „ placeholder “ im aktuellen Datensatz (Zeile) den Wert „ val “ vom Parametertyp „ paramType “ zu.
Hinweis: Das Binden eines undefinierten Platzhalters führt zu undefiniertem Verhalten.
Dies ist eine überladene Funktion.
Siehe auch ` QSqlQuery::bindValue()`.
[protected] QSql::ParamType QSqlResult::bindValueType(int index) const
Gibt den Parametertyp für den an der Position index gebundenen Wert zurück.
Siehe auch boundValue().
[protected] QSql::ParamType QSqlResult::bindValueType(const QString &placeholder) const
Gibt den Parametertyp für den Wert zurück, der mit dem angegebenen Namen „ placeholder “ verknüpft ist.
Dies ist eine überladene Funktion.
[protected] QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const
Gibt die von vorbereiteten Abfragen verwendete Bindungssyntax zurück.
[protected] QVariant QSqlResult::boundValue(int index) const
Gibt den Wert zurück, der an der Position „ index “ im aktuellen Datensatz (Zeile) gespeichert ist.
Siehe auch ` bindValue()` und ` boundValues()`.
[protected] QVariant QSqlResult::boundValue(const QString &placeholder) const
Gibt den Wert zurück, der im aktuellen Datensatz (Zeile) an den angegebenen Namen „ placeholder “ gebunden ist.
Dies ist eine überladene Funktion.
Siehe auch ` bindValueType()`.
[protected] int QSqlResult::boundValueCount() const
Gibt die Anzahl der gebundenen Werte im Ergebnis zurück.
Siehe auch „ boundValues()“.
[protected] QString QSqlResult::boundValueName(int index) const
Gibt den Namen des gebundenen Werts an der Position „ index “ im aktuellen Datensatz (Zeile) zurück.
Siehe auch „ boundValue()“ und „ boundValueNames()“.
[protected] QStringList QSqlResult::boundValueNames() const
Gibt die Namen aller gebundenen Werte zurück.
Siehe auch boundValue() und boundValueName().
[protected] QVariantList QSqlResult::boundValues() const
Gibt eine Liste der gebundenen Werte des Ergebnisses für den aktuellen Datensatz (Zeile) zurück.
Siehe auch ` boundValueCount()`.
[protected] QVariantList &QSqlResult::boundValues()
Gibt eine veränderbare Referenz auf die Liste der gebundenen Werte des Ergebnisses für den aktuellen Datensatz (Zeile) zurück.
Dies ist eine überladene Funktion.
Siehe auch „ boundValueCount()“.
[protected] void QSqlResult::clear()
Löscht die gesamte Ergebnismenge und gibt alle zugehörigen Ressourcen frei.
[pure virtual protected] QVariant QSqlResult::data(int index)
Gibt die Daten für das Feld „ index “ in der aktuellen Zeile als „ QVariant “ zurück. Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis im aktiven Zustand befindet, auf einem gültigen Datensatz positioniert ist und „ index “ nicht negativ ist. Abgeleitete Klassen müssen diese Funktion neu implementieren und den Wert des Feldes „ index “ zurückgeben oder „QVariant()“, falls dieser nicht ermittelt werden kann.
[protected] const QSqlDriver *QSqlResult::driver() const
Gibt den dem Ergebnis zugeordneten Treiber zurück. Dabei handelt es sich um das Objekt, das an den Konstruktor übergeben wurde.
[virtual protected] bool QSqlResult::exec()
Führt die Abfrage aus und gibt bei Erfolg „true“ zurück; andernfalls wird „false“ zurückgegeben.
Siehe auch ` prepare()`.
[protected] QString QSqlResult::executedQuery() const
Gibt die tatsächlich ausgeführte Abfrage zurück. Diese kann von der übergebenen Abfrage abweichen, beispielsweise wenn bei einer vorbereiteten Abfrage gebundene Werte verwendet wurden und die zugrunde liegende Datenbank vorbereitete Abfragen nicht unterstützt.
Siehe auch exec() und setQuery().
[pure virtual protected] bool QSqlResult::fetch(int index)
Positioniert das Ergebnis in einem beliebigen (nullbasierten) Zeilen index.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis im aktiven Zustand befindet. Abgeleitete Klassen müssen diese Funktion neu implementieren und das Ergebnis in der Zeile index positionieren sowie setAt() mit einem geeigneten Wert aufrufen. Geben Sie „true“ zurück, um den Erfolg anzuzeigen, oder „false“, um einen Fehler zu signalisieren.
Siehe auch isActive(), fetchFirst(), fetchLast(), fetchNext() und fetchPrevious().
[pure virtual protected] bool QSqlResult::fetchFirst()
Setzt das Ergebnis auf den ersten Datensatz (Zeile 0) im Ergebnis.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis im aktiven Zustand befindet. Abgeleitete Klassen müssen diese Funktion neu implementieren, das Ergebnis auf den ersten Datensatz setzen und ` setAt()` mit einem geeigneten Wert aufrufen. Geben Sie `true` zurück, um den Erfolg anzuzeigen, oder `false`, um einen Fehler zu signalisieren.
Siehe auch ` fetch()` und ` fetchLast()`.
[pure virtual protected] bool QSqlResult::fetchLast()
Setzt das Ergebnis auf den letzten Datensatz (letzte Zeile) im Ergebnis.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis im aktiven Zustand befindet. Abgeleitete Klassen müssen diese Funktion neu implementieren, das Ergebnis auf den letzten Datensatz setzen und ` setAt()` mit einem geeigneten Wert aufrufen. Geben Sie `true` zurück, um den Erfolg anzuzeigen, oder `false`, um einen Fehler anzuzeigen.
Siehe auch ` fetch()` und ` fetchFirst()`.
[virtual protected] bool QSqlResult::fetchNext()
Setzt das Ergebnis auf den nächsten verfügbaren Datensatz (Zeile) im Ergebnis.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis im aktiven Zustand befindet. Die Standardimplementierung ruft „ fetch()“ mit dem nächsten Index auf. Abgeleitete Klassen können diese Funktion neu implementieren und das Ergebnis auf andere Weise auf den nächsten Datensatz setzen sowie „ setAt()“ mit einem geeigneten Wert aufrufen. Geben Sie „true“ zurück, um den Erfolg anzuzeigen, oder „false“, um einen Fehler zu signalisieren.
Siehe auch ` fetch()` und ` fetchPrevious()`.
[virtual protected] bool QSqlResult::fetchPrevious()
Setzt das Ergebnis auf den vorherigen Datensatz (die vorherige Zeile) im Ergebnis.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis in einem aktiven Zustand befindet. Die Standardimplementierung ruft ` fetch()` mit dem vorherigen Index auf. Abgeleitete Klassen können diese Funktion neu implementieren und das Ergebnis auf andere Weise auf den nächsten Datensatz setzen sowie ` setAt()` mit einem geeigneten Wert aufrufen. Geben Sie `true` zurück, um den Erfolg anzuzeigen, oder `false`, um einen Fehler anzuzeigen.
[virtual] QVariant QSqlResult::handle() const
Gibt das Low-Level-Datenbank-Handle für diese Ergebnismenge zurück, das in ein „ QVariant “ eingeschlossen ist, oder ein ungültiges „ QVariant “, falls kein Handle vorhanden ist.
Warnung: Verwenden Sie diese Funktion mit äußerster Vorsicht und nur, wenn Sie genau wissen, was Sie tun.
Warnung: Das hier zurückgegebene Handle kann zu einem veralteten Zeiger werden, wenn das Ergebnis geändert wird (beispielsweise, wenn Sie es löschen).
Warnung: Der Handle kann NULL sein, wenn das Ergebnis noch nicht ausgeführt wurde.
Warnung: PostgreSQL : Im „Forward-Only“-Modus kann sich das Handle von ` QSqlResult ` nach dem Aufruf von ` fetch()`, ` fetchFirst()`, ` fetchLast()`, ` fetchNext()`, ` fetchPrevious()` oder `nextResult()` ändern.
Das hier zurückgegebene Handle ist datenbankabhängig; Sie sollten den Typnamen der Variante abfragen, bevor Sie darauf zugreifen.
Dieses Beispiel ruft das Handle für ein SQLite-Ergebnis ab:
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) {
// ...
}
}Dieser Codeausschnitt gibt das Handle für PostgreSQL oder MySQL zurück:
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) {
// ...
}
}Siehe auch QSqlDriver::handle().
[protected] bool QSqlResult::hasOutValues() const
Gibt „ true “ zurück, wenn mindestens einer der gebundenen Werte der Abfrage ein „ QSql::Out “ oder ein „ QSql::InOut “ ist; andernfalls wird „ false “ zurückgegeben.
Siehe auch bindValueType().
[protected] bool QSqlResult::isActive() const
Gibt „ true “ zurück, wenn das Ergebnis Datensätze enthält, die abgerufen werden sollen; andernfalls wird „ false “ zurückgegeben.
[protected] bool QSqlResult::isForwardOnly() const
Gibt „ true “ zurück, wenn man in der Ergebnismenge nur vorwärts blättern kann; andernfalls wird „ false “ zurückgegeben.
Siehe auch setForwardOnly().
[pure virtual protected] bool QSqlResult::isNull(int index)
Gibt „ true “ zurück, wenn das Feld an der Position „ index “ in der aktuellen Zeile null ist; andernfalls wird „ false “ zurückgegeben.
[protected] bool QSqlResult::isSelect() const
Gibt „ true “ zurück, wenn das aktuelle Ergebnis aus einer „ SELECT “-Anweisung stammt; andernfalls wird „ false “ zurückgegeben.
Siehe auch „ setSelect()“.
[protected] bool QSqlResult::isValid() const
Gibt „ true “ zurück, wenn der Cursor auf einem gültigen Datensatz positioniert ist (d. h., der Cursor befindet sich weder vor dem ersten noch nach dem letzten Datensatz); andernfalls wird „ false “ zurückgegeben.
Siehe auch at().
[protected] QSqlError QSqlResult::lastError() const
Gibt den letzten mit dem Ergebnis verbundenen Fehler zurück.
Siehe auch ` setLastError()`.
[virtual protected] QVariant QSqlResult::lastInsertId() const
Gibt die Objekt-ID der zuletzt eingefügten Zeile zurück, sofern die Datenbank dies unterstützt. Ein ungültiger ` QVariant `-Wert wird zurückgegeben, wenn die Abfrage keinen Wert eingefügt hat oder wenn die Datenbank die ID nicht zurückmeldet. Wenn mehr als eine Zeile von der Einfügung betroffen war, ist das Verhalten undefiniert.
Beachten Sie, dass bei Oracle-Datenbanken die ROWID der Zeile zurückgegeben wird, während bei MySQL-Datenbanken das Auto-Increment-Feld der Zeile zurückgegeben wird.
Siehe auch QSqlDriver::hasFeature().
[protected] QString QSqlResult::lastQuery() const
Gibt den aktuellen SQL-Abfragetext zurück oder eine leere Zeichenkette, falls kein Text vorhanden ist.
Siehe auch ` setQuery()`.
[pure virtual protected] int QSqlResult::numRowsAffected()
Gibt die Anzahl der Zeilen zurück, die von der zuletzt ausgeführten Abfrage betroffen sind, oder -1, wenn diese nicht ermittelt werden kann oder wenn es sich bei der Abfrage um eine SELECT -Anweisung handelt.
Siehe auch ` size()`.
[virtual protected] bool QSqlResult::prepare(const QString &query)
Bereitet die angegebene Abfrage ` query ` für die Ausführung vor; die Abfrage verwendet in der Regel Platzhalter, damit sie wiederholt ausgeführt werden kann. Gibt `true` zurück, wenn die Abfrage erfolgreich vorbereitet wurde; andernfalls wird ` false` zurückgegeben.
Siehe auch ` exec()`.
[virtual protected] QSqlRecord QSqlResult::record() const
Gibt den aktuellen Datensatz zurück, wenn die Abfrage aktiv ist; andernfalls wird ein leeres ` QSqlRecord` zurückgegeben.
Die Standardimplementierung gibt immer ein leeres ` QSqlRecord` zurück.
Siehe auch ` isActive()`.
[pure virtual protected] bool QSqlResult::reset(const QString &query)
Legt fest, dass für den nachfolgenden Datenabruf die SQL-Anweisung „ query “ verwendet wird.
Abgeleitete Klassen müssen diese Funktion neu implementieren und die Abfrage ` query ` auf die Datenbank anwenden. Diese Funktion wird erst aufgerufen, nachdem das Ergebnis in einen inaktiven Zustand versetzt wurde, und wird vor dem ersten Datensatz des neuen Ergebnisses positioniert. Abgeleitete Klassen sollten `true` zurückgeben, wenn die Abfrage erfolgreich war und das Ergebnis einsatzbereit ist, andernfalls `false`.
Siehe auch ` setQuery()`.
[protected] void QSqlResult::resetBindCount()
Setzt die Anzahl der Bind-Parameter zurück.
[virtual protected] bool QSqlResult::savePrepare(const QString &query)
Bereitet die angegebene Abfrage ` query` vor und nutzt dabei, soweit möglich, die zugrunde liegende Datenbankfunktionalität. Gibt ` true ` zurück, wenn die Abfrage erfolgreich vorbereitet wurde; andernfalls wird ` false` zurückgegeben.
Hinweis: Diese Methode hätte eigentlich „safePrepare()“ heißen sollen.
Siehe auch ` prepare()`.
[virtual protected] void QSqlResult::setActive(bool active)
Diese Funktion steht abgeleiteten Klassen zur Verfügung, um den internen Aktivitätsstatus auf „ active “ zu setzen.
Siehe auch ` isActive()`.
[virtual protected] void QSqlResult::setAt(int index)
Diese Funktion steht abgeleiteten Klassen zur Verfügung, um die interne (nullbasierte) Zeilenposition auf ` index` zu setzen.
Siehe auch ` at()`.
[virtual protected] void QSqlResult::setForwardOnly(bool forward)
Setzt den „Forward-Only“-Modus auf „ forward “. Wenn „ forward “ auf „true“ gesetzt ist, ist zur Navigation durch die Ergebnisse nur „ fetchNext()“ zulässig. Der „Forward-Only“-Modus benötigt deutlich weniger Speicher, da die Ergebnisse nicht zwischengespeichert werden müssen. Standardmäßig ist diese Funktion deaktiviert.
Die Einstellung von „forward only“ auf „false“ ist eine Empfehlung an die Datenbank-Engine, die letztendlich entscheidet, ob eine Ergebnismenge nur vorwärts navigierbar oder scrollbar ist. „ isForwardOnly()“ gibt immer den korrekten Status der Ergebnismenge zurück.
Hinweis: Der Aufruf von `setForwardOnly` nach Ausführung der Abfrage führt im besten Fall zu unerwarteten Ergebnissen, im schlimmsten Fall zu Abstürzen.
Hinweis: Um sicherzustellen, dass die „Forward-Only“-Abfrage erfolgreich abgeschlossen wurde, sollte die Anwendung nicht nur nach Ausführung der Abfrage, sondern auch nach dem Durchlaufen der Abfrageergebnisse mit ` lastError()` auf Fehler prüfen.
Warnung: PostgreSQL : Führen Sie beim Durchlaufen der Abfrageergebnisse im „Forward-Only“-Modus keine anderen SQL-Befehle über dieselbe Datenbankverbindung aus. Dies führt zum Verlust der Abfrageergebnisse.
Siehe auch isForwardOnly(), fetchNext() und QSqlQuery::setForwardOnly().
[virtual protected] void QSqlResult::setLastError(const QSqlError &error)
Diese Funktion steht abgeleiteten Klassen zur Verfügung, um den letzten Fehler auf „ error “ zu setzen.
Siehe auch ` lastError()`.
[virtual protected] void QSqlResult::setQuery(const QString &query)
Setzt die aktuelle Abfrage für das Ergebnis auf „ query “. Sie müssen die Funktion ` reset()` aufrufen, um die Abfrage in der Datenbank auszuführen.
Siehe auch „ reset()“ und „ lastQuery()“.
[virtual protected] void QSqlResult::setSelect(bool select)
Diese Funktion steht abgeleiteten Klassen zur Verfügung, um anzugeben, ob es sich bei der aktuellen Anweisung um eine SQL- SELECT -Anweisung handelt oder nicht. Der Parameter „ select “ sollte den Wert „true“ annehmen, wenn es sich bei der Anweisung um eine „ SELECT “-Anweisung handelt; andernfalls sollte er den Wert „false“ annehmen.
Siehe auch ` isSelect()`.
[pure virtual protected] int QSqlResult::size()
Gibt die Größe des Ergebnisses von „ SELECT “ zurück oder -1, wenn diese nicht ermittelt werden kann oder wenn es sich bei der Abfrage nicht um eine „ SELECT “-Anweisung handelt.
Siehe auch ` numRowsAffected()`.
© 2026 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.