QSqlField Class

Die Klasse QSqlField manipuliert die Felder in SQL-Datenbanktabellen und Views. Mehr...

Kopfzeile: #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()
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

Detaillierte Beschreibung

QSqlField repräsentiert die Eigenschaften einer einzelnen Spalte in einer Datenbanktabelle oder einem View, wie z.B. den Datentyp und den Spaltennamen. Ein Feld enthält auch den Wert der Datenbankspalte, der angezeigt oder geändert werden kann.

Felddatenwerte werden als QVarianten gespeichert. Die Verwendung eines inkompatiblen Typs ist nicht erlaubt. Ein Beispiel:

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

Das Feld wird jedoch versuchen, bestimmte Datentypen in den Felddatentyp umzuwandeln, wenn dies möglich ist:

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

QSqlField-Objekte werden selten explizit im Anwendungscode erstellt. Auf sie wird normalerweise indirekt über QSqlRecordzugegriffen, das bereits eine Liste von Feldern enthält. Ein Beispiel:

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

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

Siehe auch QSqlRecord.

Dokumentation der Mitgliedstypen

enum QSqlField::RequiredStatus

Gibt an, ob das Feld erforderlich oder optional 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 erforderlich oder optional ist.

Siehe auch requiredStatus.

Eigenschaft Dokumentation

[since 6.8] autoValue : bool

Wenn der Wert von der Datenbank automatisch generiert wird, z. B. automatisch inkrementierende Primärschlüsselwerte, lautet dieser Wert true.

Hinweis: Bei Verwendung des ODBC-Treibers wird das Feld isAutoValue() aufgrund von Einschränkungen in der ODBC-API nur in einem QSqlField ausgefüllt, das aus einem QSqlRecord resultiert, das durch die Ausführung einer SELECT -Abfrage erhalten wurde. Es ist false in einer QSqlField, die aus einer QSqlRecord resultiert, die von QSqlDatabase::record() oder QSqlDatabase::primaryIndex() zurückgegeben wurde.

Diese Eigenschaft 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 Eigenschaft 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 false ist, wird kein SQL für dieses Feld generiert; andernfalls werden Qt-Klassen wie QSqlQueryModel und QSqlTableModel SQL für dieses Feld generieren.

Diese Eigenschaft 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 nicht in der Datenbank verfügbar ist. Für Strings ist dies die maximale Anzahl von Zeichen, die der String enthalten kann; die Bedeutung variiert für andere Typen.

Diese Eigenschaft 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 Typ des Feldes, wie er in der Datenbank gespeichert ist. Beachten Sie, dass der tatsächliche Wert einen anderen Typ haben kann. Numerische Werte, die zu groß sind, um sie in einem long int oder double zu speichern, werden normalerweise als Strings gespeichert, um Präzisionsverluste zu vermeiden.

Diese Eigenschaft 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. Dies kann der Spaltenname oder ein vom Benutzer vergebener Alias sein.

Zugriffsfunktionen:

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

[since 6.8] precision : int

Diese Eigenschaft enthält die Genauigkeit des Feldes; sie ist nur für numerische Typen sinnvoll.

Wenn der zurückgegebene Wert negativ ist, bedeutet dies, dass die Information nicht in der Datenbank verfügbar ist.

Diese Eigenschaft wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

int precision() const
void setPrecision(int precision)

[since 6.8] readOnly : bool

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

Diese Eigenschaft 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. Eine INSERT wird fehlschlagen, wenn ein erforderliches Feld keinen Wert hat.

Diese Eigenschaft 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 Tabellennamen des Feldes.

Hinweis: Bei Verwendung des QPSQL-Treibers wird aufgrund von Einschränkungen in der libpq-Bibliothek das Feld tableName() nicht in einer QSqlField ausgefüllt, die aus einer QSqlRecord resultiert, die durch QSqlQuery::record() einer reinen Vorwärtsabfrage erhalten wurde.

Diese Eigenschaft 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 die value als eine QVariant

Das Setzen von value auf ein schreibgeschütztes QSqlField ist ein No-op. Wenn der Datentyp von value vom aktuellen Datentyp des Feldes abweicht, wird versucht, ihn auf den richtigen Typ zu übertragen. Dadurch bleibt der Datentyp des Feldes im Falle einer Zuweisung erhalten, z. B. ein QString an einen Integer-Datentyp.

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

Diese Eigenschaft wurde in Qt 6.8 eingeführt.

Zugriffsfunktionen:

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

Dokumentation der Mitgliedsfunktionen

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

Dies ist eine überladene Funktion.

Konstruiert ein leeres Feld namens fieldName vom Typ type in table.

Diese Funktion wurde in Qt 6.0 eingeführt.

QSqlField::QSqlField(const QSqlField &other)

Konstruiert eine Kopie von other.

[noexcept] QSqlField::~QSqlField()

Zerstört das Objekt und gibt alle zugewiesenen Ressourcen frei.

void QSqlField::clear()

Löscht den Wert des Feldes und setzt ihn auf NULL. Wenn das Feld schreibgeschützt ist, 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 setzt er ihn auf Optional.

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 nie 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 ungleich other ist; andernfalls wird false zurückgegeben.

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

Setzt das Feld gleich other.

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

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

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