Auf dieser Seite

QSqlField Class

Die Klasse „QSqlField“ dient zur Bearbeitung der Felder in SQL-Datenbanktabellen und -Ansichten. Mehr...

Header: #include <QSqlField>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql

Öffentliche Typen

enum RequiredStatus { Required, Optional, Unknown }

Eigenschaften

Öffentliche Funktionen

(since 6.0) QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString())
QSqlField(const QSqlField &other)
QSqlField(QSqlField &&other)
~QSqlField()
void clear()
QVariant defaultValue() const
bool isAutoValue() const
bool isGenerated() const
bool isNull() const
bool isReadOnly() const
bool isValid() const
int length() const
QMetaType metaType() const
QString name() const
int precision() const
QSqlField::RequiredStatus requiredStatus() const
void setAutoValue(bool autoVal)
void setDefaultValue(const QVariant &value)
void setGenerated(bool gen)
void setLength(int fieldLength)
void setMetaType(QMetaType type)
void setName(const QString &name)
void setPrecision(int precision)
void setReadOnly(bool readOnly)
void setRequired(bool required)
void setRequiredStatus(QSqlField::RequiredStatus required)
void setTableName(const QString &tableName)
void setValue(const QVariant &value)
(since 6.6) void swap(QSqlField &other)
QString tableName() const
QVariant value() const
bool operator!=(const QSqlField &other) const
QSqlField &operator=(const QSqlField &other)
bool operator==(const QSqlField &other) const

Ausführliche Beschreibung

QSqlField repräsentiert die Eigenschaften einer einzelnen Spalte in einer Datenbanktabelle oder -ansicht, wie beispielsweise den Datentyp und den Spaltennamen. Ein Feld enthält außerdem den Wert der Datenbankspalte, der angezeigt oder geändert werden kann.

Felddatenwerte werden als QVariants gespeichert. Die Verwendung eines inkompatiblen Typs ist nicht zulässig. Beispiel:

    QSqlField field("age", QMetaType::fromType<int>());
    field.setValue(QPixmap());  // WRONG

Das Feld versucht jedoch, bestimmte Datentypen nach Möglichkeit in den Felddatentyp umzuwandeln:

    QSqlField field("age", QMetaType::fromType<int>());
    field.setValue(QString("123"));  // casts QString to int

QSqlField-Objekte werden im Anwendungscode selten explizit erstellt. Der Zugriff erfolgt in der Regel indirekt über ` QSqlRecords`, die bereits eine Liste von Feldern enthalten. Beispiel:

    QSqlQuery query;
    ...
    QSqlRecord record = query.record();
    QSqlField field = record.field("country");

Ein QSqlField-Objekt kann einige Metadaten zum Feld bereitstellen, zum Beispiel dessen „ name()“, „variant metaType()“, „ length()“, „ precision()“, „ defaultValue()“, „typeID()“ sowie dessen „ requiredStatus()“, „ isGenerated()“ und „ isReadOnly()“. Die Daten des Feldes können überprüft werden, um festzustellen, ob sie „ isNull “ () sind, und die „ value “ () können abgerufen werden. Beim Bearbeiten können die Daten mit „ setValue “ () gesetzt oder mit „ clear “ () auf NULL gesetzt werden.

Siehe auch QSqlRecord.

Dokumentation zu Mitgliedstypen

enum QSqlField::RequiredStatus

Gibt an, ob das Feld ein Pflichtfeld oder ein optionales Feld ist.

KonstanteWertBeschreibung
QSqlField::Required1Das Feld muss beim Einfügen von Datensätzen angegeben werden.
QSqlField::Optional0Das Feld muss beim Einfügen von Datensätzen nicht angegeben werden.
QSqlField::Unknown-1Der Datenbanktreiber konnte nicht feststellen, ob das Feld obligatorisch oder optional ist.

Siehe auch requiredStatus.

Eigenschaftsdokumentation

[since 6.8] autoValue : bool

Wenn der Wert von der Datenbank automatisch generiert wird, beispielsweise bei automatisch inkrementierten Primärschlüsselwerten, lautet dieser Wert „ true “.

Hinweis: Beim Schreiben eines neuen Datensatzes in die Datenbank enthält das Feld „ autoValue “ den von der Datenbank generierten neuen Wert erst, nachdem der Datensatz an die Datenbank übermittelt wurde. Bei Verwendung des ODBC-Treibers wird das Feld „ isAutoValue() “ aufgrund von Einschränkungen in der ODBC-API nur in einem „ QSqlField “ gefüllt, das aus einem „ QSqlRecord “ resultiert, der durch die Ausführung einer „ SELECT “-Abfrage erhalten wurde. Für ein „ QSqlField “, das aus einem „ QSqlRecord “ resultiert, der von „ QSqlDatabase::record()“ oder „ QSqlDatabase::primaryIndex()“ zurückgegeben wurde, gilt „ false “.

Diese Aufzählung wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

bool isAutoValue() const
void setAutoValue(bool autoVal)

[since 6.8] defaultValue : QVariant

Diese Eigenschaft enthält den Standardwert für dieses Feld. Nur einige Datenbanktreiber unterstützen diese Eigenschaft. Derzeit sind dies SQLite, PostgreSQL, Oracle und MySQL/MariaDB.

Diese Aufzählung wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

QVariant defaultValue() const
void setDefaultValue(const QVariant &value)

[since 6.8] generated : bool

Diese Eigenschaft enthält den generierten Status. Wenn „ generated “ auf „ false “ gesetzt ist, wird für dieses Feld kein SQL generiert; andernfalls generieren Qt-Klassen wie „ QSqlQueryModel “ und „ QSqlTableModel “ SQL für dieses Feld.

Diese Aufzählung wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

bool isGenerated() const
void setGenerated(bool gen)

[since 6.8] length : int

Diese Eigenschaft enthält die Länge des Feldes.

Ist der Wert negativ, bedeutet dies, dass die Information in der Datenbank nicht verfügbar ist. Bei Zeichenketten ist dies die maximale Anzahl an Zeichen, die die Zeichenkette enthalten kann; bei anderen Typen variiert die Bedeutung.

Diese Aufzählung wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

int length() const
void setLength(int fieldLength)

[since 6.8] metaType : QMetaType

Diese Eigenschaft enthält den in der Datenbank gespeicherten Typ des Feldes. Beachten Sie, dass der tatsächliche Wert möglicherweise einen anderen Typ hat. Numerische Werte, die zu groß sind, um in einem `long int` oder `double` gespeichert zu werden, werden in der Regel als Zeichenketten gespeichert, um Genauigkeitsverluste zu vermeiden.

Diese Aufzählung wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

QMetaType metaType() const
void setMetaType(QMetaType type)

Siehe auch „ QSqlDatabase::numericalPrecisionPolicy “.

name : QString

Diese Eigenschaft enthält den Namen des Feldes. Dabei kann es sich um den Spaltennamen oder einen vom Benutzer vergebenen Alias handeln.

Zugriffsfunktionen:

QString name() const
void setName(const QString &name)

[since 6.8] precision : int

Diese Eigenschaft gibt die Genauigkeit des Feldes an; dies ist nur für numerische Typen von Bedeutung.

Ist der Rückgabewert negativ, bedeutet dies, dass die Informationen in der Datenbank nicht verfügbar sind.

Diese Enumeration wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

int precision() const
void setPrecision(int precision)

[since 6.8] readOnly : bool

Wenn diese Eigenschaft auf „ true “ gesetzt ist, kann dieses „ QSqlField “ nicht geändert werden. Der Wert eines schreibgeschützten Feldes kann nicht mit „ setValue()“ gesetzt und nicht mit „ clear()“ auf NULL gesetzt werden.

Diese Enumeration wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

bool isReadOnly() const
void setReadOnly(bool readOnly)

[since 6.8] requiredStatus : RequiredStatus

Diese Eigenschaft enthält die „ RequiredStatus “ des Feldes. Ein „ INSERT “ schlägt fehl, wenn ein Pflichtfeld keinen Wert enthält.

Diese Aufzählung wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

QSqlField::RequiredStatus requiredStatus() const
void setRequiredStatus(QSqlField::RequiredStatus required)

Siehe auch „ RequiredStatus “.

[since 6.8] tableName : QString

Diese Eigenschaft enthält den „tableName“ des Feldes.

Hinweis: Bei Verwendung des QPSQL-Treibers wird aufgrund von Einschränkungen in der libpq-Bibliothek das Feld „ tableName() “ in einem „ QSqlField “ nicht gefüllt, das aus einem „ QSqlRecord “ resultiert, der durch „ QSqlQuery::record()“ einer Forward-Only-Abfrage abgerufen wurde.

Diese Aufzählung wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

QString tableName() const
void setTableName(const QString &tableName)

[since 6.8] value : QVariant

Diese Eigenschaft enthält den value als QVariant

Das Setzen von „ value “ auf ein schreibgeschütztes „ QSqlField “ hat keine Auswirkung. Wenn sich der Datentyp von „ value “ vom aktuellen Datentyp des Feldes unterscheidet, wird versucht, ihn in den richtigen Typ umzuwandeln. Dadurch bleibt der Datentyp des Feldes bei einer Zuweisung erhalten, z. B. bei der Zuweisung eines „ QString “ zu einem ganzzahligen Datentyp.

Um den Wert auf NULL zu setzen, verwenden Sie ` clear()`.

Diese Aufzählung wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

QVariant value() const
void setValue(const QVariant &value)

Dokumentation zu den Member-Funktionen

[explicit, since 6.0] QSqlField::QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString())

Erstellt ein leeres Feld namens „ fieldName “ vom Typ „ type “ in „ table “.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.0 eingeführt.

QSqlField::QSqlField(const QSqlField &other)

Erstellt eine Kopie von „ other “.

[noexcept default] QSqlField::QSqlField(QSqlField &&other)

Erstellt eine Instanz von ` QSqlField` mithilfe von `Move`.

[noexcept] QSqlField::~QSqlField()

Löscht das Objekt und gibt alle zugewiesenen Ressourcen frei.

void QSqlField::clear()

Löscht den Wert des Feldes und setzt ihn auf NULL. Ist das Feld schreibgeschützt, geschieht nichts.

QVariant QSqlField::defaultValue() const

Legt den Wert von „defaultValue“ fest.

Hinweis: Getter -Funktion für die Eigenschaft „defaultValue“.

Siehe auch „ setDefaultValue()“.

bool QSqlField::isAutoValue() const

Gibt den Wert von „ autoValue “ zurück.

Hinweis: Getter -Funktion für die Eigenschaft „ autoValue “.

bool QSqlField::isGenerated() const

Gibt den Wert von ` generated` zurück.

Hinweis: Getter -Funktion für die Eigenschaft „ generated “.

bool QSqlField::isNull() const

Gibt „ true “ zurück, wenn der Wert des Feldes NULL ist; andernfalls wird „false“ zurückgegeben.

Siehe auch „ value “.

bool QSqlField::isReadOnly() const

Gibt den Wert von ` readOnly` zurück.

Hinweis: Getter -Funktion für die Eigenschaft „ readOnly “.

bool QSqlField::isValid() const

Gibt „ true “ zurück, wenn der Variantentyp des Feldes gültig ist; andernfalls wird „ false “ zurückgegeben.

int QSqlField::length() const

Gibt den Wert von „length“ zurück.

Hinweis: Getter -Funktion für die Eigenschaft „length“.

Siehe auch „ setLength()“.

QMetaType QSqlField::metaType() const

Gibt den Wert von metaType zurück.

Hinweis: Getter -Funktion für die Eigenschaft „metaType“.

Siehe auch „ setMetaType()“.

QString QSqlField::name() const

Gibt den Wert von „name“ zurück.

Hinweis: Getter -Funktion für die Eigenschaft „name“.

Siehe auch „ setName()“.

int QSqlField::precision() const

Gibt den Wert von „precision“ zurück.

Hinweis: Getter -Funktion für die Eigenschaft „precision“.

Siehe auch „ setPrecision()“.

QSqlField::RequiredStatus QSqlField::requiredStatus() const

Gibt den Wert von „requiredStatus“ zurück.

Hinweis: Getter -Funktion für die Eigenschaft „requiredStatus“.

Siehe auch „ setRequiredStatus()“.

void QSqlField::setAutoValue(bool autoVal)

Setzt „ autoValue “ auf „ autoVal “.

Hinweis: Setter -Funktion für die Eigenschaft „ autoValue “.

Siehe auch isAutoValue().

void QSqlField::setDefaultValue(const QVariant &value)

Setzt „ defaultValue “ auf „ value “.

Hinweis: Setter -Funktion für die Eigenschaft ` defaultValue`.

Siehe auch defaultValue().

void QSqlField::setGenerated(bool gen)

Setzt „ generated “ auf „ gen “.

Hinweis: Setter -Funktion für die Eigenschaft generated.

Siehe auch isGenerated().

void QSqlField::setLength(int fieldLength)

Setzt „ length “ auf „ fieldLength “.

Hinweis: Setter -Funktion für die Eigenschaft ` length`.

Siehe auch length().

void QSqlField::setMetaType(QMetaType type)

Setzt „ metaType “ auf „ type “.

Hinweis: Setter -Funktion für die Eigenschaft ` metaType`.

Siehe auch metaType().

void QSqlField::setName(const QString &name)

Setzt „ name “ auf „ name “.

Hinweis: Setter -Funktion für die Eigenschaft ` name`.

Siehe auch name().

void QSqlField::setPrecision(int precision)

Setzt „ precision “ auf „ precision “.

Hinweis: Setter -Funktion für die Eigenschaft ` precision`.

Siehe auch precision().

void QSqlField::setReadOnly(bool readOnly)

Setzt „ readOnly “ auf „ readOnly “.

Hinweis: Setter -Funktion für die Eigenschaft ` readOnly`.

Siehe auch isReadOnly().

void QSqlField::setRequired(bool required)

Setzt den erforderlichen Status dieses Feldes auf „ Required “, wenn „ required “ wahr ist; andernfalls wird er auf „ Optional “ gesetzt.

Siehe auch „ requiredStatus “.

void QSqlField::setRequiredStatus(QSqlField::RequiredStatus required)

Setzt „ requiredStatus “ auf „ required “.

Hinweis: Setter -Funktion für die Eigenschaft ` requiredStatus`.

Siehe auch requiredStatus().

void QSqlField::setTableName(const QString &tableName)

Setzt „ tableName “ auf „ tableName “.

Hinweis: Setter -Funktion für die Eigenschaft ` tableName`.

Siehe auch „ tableName()“.

void QSqlField::setValue(const QVariant &value)

Setzt „ value “ auf „ value “.

Hinweis: Setter -Funktion für die Eigenschaft ` value`.

Siehe auch value().

[noexcept, since 6.6] void QSqlField::swap(QSqlField &other)

Tauscht dieses Feld mit „ other “ aus. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

Diese Funktion wurde in Qt 6.6 eingeführt.

QString QSqlField::tableName() const

Gibt den tabellennamen zurück.

Hinweis: Getter -Funktion für die Eigenschaft „tableName“.

Siehe auch „ setTableName()“.

QVariant QSqlField::value() const

Gibt den Wert von „value“ zurück.

Hinweis: Getter -Funktion für die Eigenschaft „value“.

Siehe auch „ setValue()“.

bool QSqlField::operator!=(const QSqlField &other) const

Gibt „ true “ zurück, wenn das Feld nicht mit „ other “ übereinstimmt; andernfalls wird „false“ zurückgegeben.

QSqlField &QSqlField::operator=(const QSqlField &other)

Setzt das Feld auf den Wert „ other “.

bool QSqlField::operator==(const QSqlField &other) const

Gibt „ true “ zurück, wenn das Feld gleich „ other “ ist; andernfalls wird „false“ zurückgegeben.

© 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.