QSqlField 类
QSqlField 类处理 SQL 数据库表和视图的字段。 更多...
头文件 | #include <QSqlField> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Sql) target_link_libraries(mytarget PRIVATE Qt6::Sql) |
qmake | QT += sql |
- 所有成员列表,包括继承成员
- 已废弃成员
- QSqlField 是 数据库类 和 隐式共享类 的一部分。
公共类型
枚举 | RequiredStatus { Required, Optional, Unknown } |
公共函数
(自 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 &table) |
void | setValue(const QVariant &value) |
(自 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 |
详细信息
QSqlField表示数据库表或视图单列的特征,例如数据类型和列名。字段还包含数据库列的值,这些值可以查看或更改。
字段数据值存储为QVariants。不允许使用不兼容的类型。例如
但是,如果可能的话,字段将尝试将某些数据类型转换为字段数据类型
QSqlField field("age", QMetaType::fromType<int>()); field.setValue(QString("123")); // casts QString to int
QSqlField对象很少在应用程序代码中明确创建。它们通常通过已经包含字段列表的QSqlRecord间接访问。例如
QSqlQuery query; ... QSqlRecord record = query.record(); QSqlField field = record.field("country");
A QSqlField对象可以提供有关字段的某些元数据,例如其name()、variant type()、length()、precision()、defaultValue()、typeID(),以及其requiredStatus()、isGenerated()和isReadOnly()。可以检查字段的数据以查看它是否isNull(),并检索其value()。当编辑数据时,可以通过setValue()设置值或使用clear()将其设置为NULL。
参见 QSqlRecord。
成员类型文档
枚举 QSqlField::RequiredStatus
指定字段是必需的还是可选的。
常数 | 值 | 描述 |
---|---|---|
QSqlField::Required | 1 | 插入记录时必须指定字段。 |
QSqlField::Optional | 0 | 插入记录时不需要指定字段。 |
QSqlField::Unknown | -1 | 数据库驱动程序无法确定字段是必需的还是可选的。 |
参见 requiredStatus。
成员函数文档
[显式,自6.0起]
QSqlField::QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &table = QString())
这是一个重载函数。
在table中创建一个类型为type的空字段fieldName。
此函数自Qt 6.0引入。
参见 setRequiredStatus、setLength、setPrecision、setDefaultValue和setGenerated、setReadOnly。
QSqlField::QSqlField(const QSqlField &other)
构造other的副本。
[noexcept]
QSqlField::~QSqlField()
销毁对象并释放所分配的资源。
void QSqlField::clear()
清除字段值并将其设置为NULL。如果字段为只读,则不执行任何操作。
参见 setValue、isReadOnly和requiredStatus。
QVariant QSqlField::defaultValue() const
返回字段的默认值(可能为NULL)。
另请参阅 setDefaultValue(),metaType(),requiredStatus(),length(),precision(),以及isGenerated()。
bool QSqlField::isAutoValue() const
如果值是由数据库自动生成的,则返回true
,例如自动递增主键值。
注意:由于ODBC API的限制,当使用ODBC驱动程序时,isAutoValue()
字段仅在通过执行SELECT
查询获得的QSqlField中填充,从QSqlRecord获得的QSqlField以及在QSqlDatabase::record()或QSqlDatabase::primaryIndex()中返回的结果中为false
。
另请参阅 setAutoValue()。
bool QSqlField::isGenerated() const
如果字段是生成的,则返回true
;否则返回false。
另请参阅 setGenerated(),metaType(),requiredStatus(),length(),precision(),以及defaultValue()。
bool QSqlField::isNull() const
如果字段值为NULL,则返回true
;否则返回false。
另请参阅 value()。
bool QSqlField::isReadOnly() const
如果字段值是只读的,则返回true
;否则返回false。
另请参阅 setReadOnly(),metaType(),requiredStatus(),length(),precision(),以及defaultValue()。
bool QSqlField::isValid() const
如果字段的variant类型是有效的,则返回true
;否则返回false
。
int QSqlField::length() const
返回字段的长度。
如果返回的值是负数,则表示信息无法从数据库中获取。
另请参阅 setLength(),metaType(),requiredStatus(),precision(),defaultValue(),以及isGenerated()。
QMetaType QSqlField::metaType() const
返回存储在数据库中的字段类型。请注意,实际值可能具有不同的类型,数值太大而无法存储在long int或double中时,通常以字符串形式存储以防止精度损失。
另请参阅 setMetaType()。
QString QSqlField::name() const
返回字段的名称。
另请参阅setName().
int QSqlField::precision() const
返回字段的精度,这仅对数值类型有意义。
如果返回的值是负数,则表示信息无法从数据库中获取。
另请参阅setPrecision(), metaType(), requiredStatus(), length(), defaultValue() 和 isGenerated().
QSqlField::RequiredStatus QSqlField::requiredStatus() const
如果这是一个必填字段,则返回 true
;否则返回 false
。如果必填字段没有值,则 INSERT
将失败。
另请参阅setRequiredStatus(), metaType(), length(), precision(), defaultValue() 和 isGenerated().
void QSqlField::setAutoValue(bool autoVal)
如果 autoVal 为真,则将字段标记为自动生成的值。
另请参阅isAutoValue().
void QSqlField::setDefaultValue(const QVariant &value)
将此字段的默认值设置为 value。
另请参阅defaultValue(), value(), setMetaType(), setRequiredStatus(), setLength(), setPrecision(), setGenerated(), 和 setReadOnly().
void QSqlField::setGenerated(bool gen)
设置生成状态。如果 gen 为假,则不会为该字段生成 SQL;否则,Qt 类如 QSqlQueryModel 和 QSqlTableModel 将为该字段生成 SQL。
另请参阅isGenerated(), setMetaType(), setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(), 和 setReadOnly().
void QSqlField::setLength(int fieldLength)
将字段的长度设置为 fieldLength。对于字符串,这是该字符串可以 hold 的最大字符数;对于其他类型,含义会变化。
另请参阅length(), setMetaType(), setRequiredStatus(), setPrecision(), setDefaultValue(), setGenerated() 和 setReadOnly().
void QSqlField::setMetaType(QMetaType type)
将字段的变体类型设置为 type。
另请参阅 metaType()、setRequiredStatus()、setLength()、setPrecision()、setDefaultValue()、setGenerated() 和 setReadOnly()。
void QSqlField::setName(const QString &name)
将字段的名称设置为 name。
另请参阅 name()。
void QSqlField::setPrecision(int precision)
设置字段的 precision。这仅影响数值字段。
另请参阅 precision()、setMetaType()、setRequiredStatus()、setLength()、setDefaultValue()、setGenerated() 和 setReadOnly()。
void QSqlField::setReadOnly(bool readOnly)
将字段值的只读标志设置为 readOnly。只读字段无法使用 setValue() 设置其值,并且无法使用 clear() 清除到 NULL。
另请参阅 isReadOnly()。
void QSqlField::setRequired(bool required)
如果 required 为 true,则将此字段的必填状态设置为 必填;否则将其设置为 可选。
另请参阅 setRequiredStatus() 和 requiredStatus()。
void QSqlField::setRequiredStatus(QSqlField::RequiredStatus required)
将此字段的必填状态设置为 required。
另请参阅 requiredStatus()、setMetaType()、setLength()、setPrecision()、setDefaultValue()、setGenerated() 和 setReadOnly()。
void QSqlField::setTableName(const QString &table)
将字段的 tableName 设置为 table。
另请参阅 tableName()。
void QSqlField::setValue(const QVariant &value)
将字段的值设置为 value。如果字段是只读的(《a href="qsqlfield.html#isReadOnly" translate="no">isReadOnly() 返回 true
),则不执行任何操作。
如果 值 的数据类型与字段当前的数据类型不同,则尝试将其转换为正确类型。在赋值的情况下,这保留了字段的数据类型,例如将一个 QString 赋值为整数数据类型。
要设置值为 NULL,请使用 clear()。
另请参阅 value(),isReadOnly() 和 defaultValue()。
[自从 6.6 开始不为异常]
void QSqlField::swap(QSqlField &other)
将此字段与 other 交换。此函数非常快且永远不会失败。
此功能是在 Qt 6.6 中引入的。
QString QSqlField::tableName() const
返回字段的 tableName。
注意:当使用 QPSQL 驱动程序时,由于 libpq 库的限制,来自通过 QSqlQuery::record() 对单向查询执行的结果集的 QSqlField 中的 tableName()
字段不会被填充。
另请参阅 setTableName()。
QVariant QSqlField::value() const
以 QVariant 形式返回字段值。
使用 isNull() 检查字段的值是否为 NULL。
另请参阅 setValue()。
bool QSqlField::operator!=(const QSqlField &other) const
如果字段不等于 other,则返回 true
;否则返回 false。
QSqlField &QSqlField::operator=(const QSqlField &other)
将字段设置为等于 other。
bool QSqlField::operator==(const QSqlField &other) const
如果字段等于 other,则返回 true
;否则返回 false。
© 2024 Qt 公司有限公司。本文档中所包含的贡献的文档版权属于各自的拥有者。本文档是根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 的条款提供的。Qt 和相应的标志是芬兰及全球的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者的财产。