QSqlResult Class
Die Klasse QSqlResult bietet eine abstrakte Schnittstelle für den Zugriff auf Daten aus bestimmten SQL-Datenbanken. Mehr...
Kopfzeile: | #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 von Database Classes.
Ö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 |
Detaillierte Beschreibung
Normalerweise würden Sie QSqlQuery anstelle von QSqlResult verwenden, da QSqlQuery einen generischen Wrapper für datenbankspezifische Implementierungen von QSqlResult bietet.
Wenn Sie Ihren eigenen SQL-Treiber implementieren (indem Sie QSqlDriver unterklassifizieren), müssen Sie Ihre eigene QSqlResult-Unterklasse bereitstellen, die alle von Ihnen benötigten reinen virtuellen Funktionen und andere virtuelle Funktionen implementiert.
Siehe auch QSqlDriver.
Dokumentation der Mitgliedstypen
enum QSqlResult::BindingSyntax
Dieser Enum-Typ spezifiziert die verschiedenen Syntaxen für die Angabe von Platzhaltern in vorbereiteten Abfragen.
Konstante | Wert | Beschreibung |
---|---|---|
QSqlResult::PositionalBinding | 0 | Verwenden Sie die ODBC-ähnliche Positionssyntax, mit "?" als Platzhalter. |
QSqlResult::NamedBinding | 1 | Verwenden Sie die Oracle-Syntax mit benannten Platzhaltern (z. B. ":id") |
Siehe auch bindingSyntax().
Dokumentation der Mitgliedsfunktionen
[explicit protected]
QSqlResult::QSqlResult(const QSqlDriver *db)
Erzeugt ein QSqlResult mit dem Datenbanktreiber db. Das Objekt wird in einem inaktiven Zustand initialisiert.
Siehe auch isActive() und driver().
[virtual noexcept]
QSqlResult::~QSqlResult()
Zerstört das Objekt und gibt alle zugewiesenen Ressourcen frei.
[protected]
void QSqlResult::addBindValue(const QVariant &val, QSql::ParamType paramType)
Bindet den Wert val des Parametertyps paramType an die nächste verfügbare Position im aktuellen Datensatz (Zeile).
Siehe auch bindValue().
[protected]
int QSqlResult::at() const
Gibt die aktuelle (nullbasierte) Zeilenposition des Ergebnisses zurück. Kann die speziellen Werte 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 des Parametertyps 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)
Dies ist eine überladene Funktion.
Bindet den Wert val des Parametertyps paramType an den Namen placeholder im aktuellen Datensatz (Zeile).
Hinweis: Die Bindung eines undefinierten Platzhalters führt zu einem undefinierten Verhalten.
Siehe auch QSqlQuery::bindValue().
[protected]
QSql::ParamType QSqlResult::bindValueType(int index) const
Gibt den Parametertyp für den an Position index gebundenen Wert zurück.
Siehe auch boundValue().
[protected]
QSql::ParamType QSqlResult::bindValueType(const QString &placeholder) const
Dies ist eine überladene Funktion.
Gibt den Parametertyp für den mit dem angegebenen placeholder Namen gebundenen Wert zurück.
[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) gebunden ist.
Siehe auch bindValue() und boundValues().
[protected]
QVariant QSqlResult::boundValue(const QString &placeholder) const
Dies ist eine überladene Funktion.
Gibt den Wert zurück, der durch den angegebenen placeholder Namen im aktuellen Datensatz (Zeile) gebunden ist.
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 Wertes 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()
Dies ist eine überladene Funktion.
Gibt eine veränderbare Referenz auf die Liste der gebundenen Werte des Ergebnisses für den aktuellen Datensatz (Zeile) zurück.
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 in einem aktiven Zustand befindet und auf einem gültigen Datensatz positioniert ist und index nicht-negativ ist. Abgeleitete Klassen müssen diese Funktion reimplementieren und den Wert des Feldes index zurückgeben, oder QVariant(), wenn dieser nicht ermittelt werden kann.
[protected]
const QSqlDriver *QSqlResult::driver() const
Gibt den mit dem Ergebnis verbundenen Treiber zurück. Dies ist 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 Abfrage zurück, die tatsächlich ausgeführt wurde. Diese kann sich von der übergebenen Abfrage unterscheiden, z. B. wenn gebundene Werte mit einer vorbereiteten Abfrage verwendet wurden und die zugrunde liegende Datenbank keine vorbereiteten Abfragen unterstützt.
Siehe auch exec() und setQuery().
[pure virtual protected]
bool QSqlResult::fetch(int index)
Positioniert das Ergebnis auf eine beliebige (nullbasierte) Zeile index.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis in einem aktiven Zustand befindet. Abgeleitete Klassen müssen diese Funktion reimplementieren und das Ergebnis in der Zeile index positionieren und setAt() mit einem geeigneten Wert aufrufen. Geben Sie true zurück, um Erfolg anzuzeigen, oder false, um Misserfolg zu signalisieren.
Siehe auch isActive(), fetchFirst(), fetchLast(), fetchNext(), und fetchPrevious().
[pure virtual protected]
bool QSqlResult::fetchFirst()
Positioniert das Ergebnis auf den ersten Datensatz (Zeile 0) im Ergebnis.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis in einem aktiven Zustand befindet. Abgeleitete Klassen müssen diese Funktion neu implementieren und das Ergebnis auf den ersten Datensatz positionieren und setAt() mit einem geeigneten Wert aufrufen. Geben Sie true zurück, um einen Erfolg anzuzeigen, oder false, um einen Misserfolg zu signalisieren.
Siehe auch fetch() und fetchLast().
[pure virtual protected]
bool QSqlResult::fetchLast()
Positioniert das Ergebnis auf den letzten Datensatz (letzte Zeile) im Ergebnis.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis in einem aktiven Zustand befindet. Abgeleitete Klassen müssen diese Funktion neu implementieren und das Ergebnis auf den letzten Datensatz positionieren und setAt() mit einem geeigneten Wert aufrufen. Geben Sie true zurück, um Erfolg zu melden, oder false, um Misserfolg zu signalisieren.
Siehe auch fetch() und fetchFirst().
[virtual protected]
bool QSqlResult::fetchNext()
Positioniert das Ergebnis auf den nächsten verfügbaren Datensatz (Zeile) im Ergebnis.
Diese Funktion wird nur aufgerufen, wenn sich das Ergebnis in einem 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 eine andere Weise auf den nächsten Datensatz positionieren und setAt() mit einem entsprechenden Wert aufrufen. Der Rückgabewert ist true, wenn die Funktion erfolgreich war, oder false, wenn sie fehlgeschlagen ist.
Siehe auch fetch() und fetchPrevious().
[virtual protected]
bool QSqlResult::fetchPrevious()
Positioniert das Ergebnis auf den vorherigen Datensatz (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 eine andere Weise auf den nächsten Datensatz positionieren und setAt() mit einem entsprechenden Wert aufrufen. Der Rückgabewert true zeigt den Erfolg an, false bedeutet einen Fehler.
[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, wenn es kein Handle gibt.
Warnung: Verwenden Sie dies mit äußerster Vorsicht und nur, wenn Sie wissen, was Sie tun.
Warnung: Das hier zurückgegebene Handle kann zu einem veralteten Zeiger werden, wenn das Ergebnis geändert wird (zum Beispiel, 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(), nextResult() ändern.
Das hier zurückgegebene Handle ist datenbankabhängig, Sie sollten den Typnamen der Variante abfragen, bevor Sie auf sie 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) { // ... } }
Dieses Snippet 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 können; andernfalls wird false
zurückgegeben.
[protected]
bool QSqlResult::isForwardOnly() const
Gibt true
zurück, wenn Sie nur vorwärts durch die Ergebnismenge blättern können; andernfalls wird false
zurückgegeben.
Siehe auch setForwardOnly().
[pure virtual protected]
bool QSqlResult::isNull(int index)
Gibt true
zurück, wenn das Feld an 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 von einer SELECT
-Anweisung stammt; andernfalls wird false
zurückgegeben.
Siehe auch setSelect().
[protected]
bool QSqlResult::isValid() const
Gibt true
zurück, wenn das Ergebnis auf einem gültigen Datensatz steht (d. h. das Ergebnis steht nicht vor dem ersten oder 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, wenn die Datenbank dies unterstützt. Eine ungültige QVariant 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, wenn es keine gibt.
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 sie nicht ermittelt werden kann oder wenn die Abfrage eine SELECT
-Anweisung ist.
Siehe auch size().
[virtual protected]
bool QSqlResult::prepare(const QString &query)
Bereitet die angegebene query für die Ausführung vor; die Abfrage wird normalerweise Platzhalter verwenden, 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 einen leeren QSqlRecord zurück.
Siehe auch isActive().
[pure virtual protected]
bool QSqlResult::reset(const QString &query)
Legt das Ergebnis so fest, dass die SQL-Anweisung query für den nachfolgenden Datenabruf verwendet wird.
Abgeleitete Klassen müssen diese Funktion reimplementieren und die query auf die Datenbank anwenden. Diese Funktion wird erst aufgerufen, nachdem das Ergebnis in einen inaktiven Zustand versetzt wurde und steht vor dem ersten Datensatz des neuen Ergebnisses. Abgeleitete Klassen sollten true zurückgeben, wenn die Abfrage erfolgreich war und verwendet werden kann, andernfalls false.
Siehe auch setQuery().
[protected]
void QSqlResult::resetBindCount()
Setzt die Anzahl der Bindungsparameter zurück.
[virtual protected]
bool QSqlResult::savePrepare(const QString &query)
Bereitet die angegebene query vor, wobei die zugrunde liegende Datenbankfunktionalität verwendet wird, sofern möglich. Gibt true
zurück, wenn die Abfrage erfolgreich vorbereitet wurde; andernfalls wird false
zurückgegeben.
Hinweis: Diese Methode hätte "safePrepare()" heißen müssen.
Siehe auch prepare().
[virtual protected]
void QSqlResult::setActive(bool active)
Diese Funktion wird für abgeleitete Klassen bereitgestellt, um den internen aktiven Zustand auf active zu setzen.
Siehe auch isActive().
[virtual protected]
void QSqlResult::setAt(int index)
Diese Funktion wird für abgeleitete Klassen bereitgestellt, um die interne (nullbasierte) Zeilenposition auf index zu setzen.
Siehe auch at().
[virtual protected]
void QSqlResult::setForwardOnly(bool forward)
Setzt den Modus "Nur Vorwärts" auf forward. Wenn forward wahr ist, ist nur fetchNext() für die Navigation in den Ergebnissen erlaubt. Der Modus "Nur Vorwärts" benötigt viel weniger Speicher, da die Ergebnisse nicht zwischengespeichert werden müssen. Standardmäßig ist diese Funktion deaktiviert.
Die Einstellung "nur vorwärts" auf "false" ist ein Vorschlag an die Datenbank-Engine, die das letzte Wort darüber hat, ob eine Ergebnismenge nur vorwärts oder scrollbar ist. isForwardOnly() wird immer den korrekten Status der Ergebnismenge zurückgeben.
Hinweis: Der Aufruf von setForwardOnly nach der Ausführung der Abfrage führt im besten Fall zu unerwarteten Ergebnissen und im schlimmsten Fall zum Absturz.
Hinweis: Um sicherzustellen, dass die Nur-Vorwärts-Abfrage erfolgreich abgeschlossen wurde, sollte die Anwendung lastError() nicht nur nach der Ausführung der Abfrage, sondern auch nach dem Navigieren in den Abfrageergebnissen auf einen Fehler überprüfen.
Warnung: PostgreSQL: Führen Sie während der Navigation in den Abfrageergebnissen im Forward-Only-Modus keine anderen SQL-Befehle auf derselben Datenbankverbindung aus. Dies führt dazu, dass die Abfrageergebnisse verloren gehen.
Siehe auch isForwardOnly(), fetchNext(), und QSqlQuery::setForwardOnly().
[virtual protected]
void QSqlResult::setLastError(const QSqlError &error)
Diese Funktion wird für abgeleitete Klassen bereitgestellt, 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 reset() aufrufen, um die Abfrage in der Datenbank auszuführen.
Siehe auch reset() und lastQuery().
[virtual protected]
void QSqlResult::setSelect(bool select)
Diese Funktion wird für abgeleitete Klassen bereitgestellt, um anzuzeigen, ob die aktuelle Anweisung eine SQL SELECT
-Anweisung ist oder nicht. Der Parameter select sollte true sein, wenn die Anweisung eine SELECT
Anweisung ist; andernfalls sollte er false sein.
Siehe auch isSelect().
[pure virtual protected]
int QSqlResult::size()
Gibt die Größe des SELECT
Ergebnisses zurück, oder -1, wenn sie nicht ermittelt werden kann oder wenn die Abfrage keine SELECT
Anweisung ist.
Siehe auch 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.