本页内容

QSqlRecord Class

QSqlRecord 类封装了一个数据库记录。更多内容...

头文件: #include <QSqlRecord>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql
由以下功能继承:

QSqlIndex

公共函数

QSqlRecord()
QSqlRecord(const QSqlRecord &other)
(since 6.6) QSqlRecord(QSqlRecord &&other)
~QSqlRecord()
void append(const QSqlField &field)
void clear()
void clearValues()
bool contains(QAnyStringView name) const
int count() const
QSqlField field(int index) const
QSqlField field(QAnyStringView name) const
QString fieldName(int index) const
int indexOf(QAnyStringView name) const
void insert(int pos, const QSqlField &field)
bool isEmpty() const
bool isGenerated(int index) const
bool isGenerated(QAnyStringView name) const
bool isNull(int index) const
bool isNull(QAnyStringView name) const
QSqlRecord keyValues(const QSqlRecord &keyFields) const
void remove(int pos)
void replace(int pos, const QSqlField &field)
void setGenerated(QAnyStringView name, bool generated)
void setGenerated(int index, bool generated)
void setNull(int index)
void setNull(QAnyStringView name)
void setValue(int index, const QVariant &val)
void setValue(QAnyStringView name, const QVariant &val)
(since 6.6) void swap(QSqlRecord &other)
QVariant value(int index) const
QVariant value(QAnyStringView name) const
bool operator!=(const QSqlRecord &other) const
(since 6.6) QSqlRecord &operator=(QSqlRecord &&other)
QSqlRecord &operator=(const QSqlRecord &other)
bool operator==(const QSqlRecord &other) const

详细说明

QSqlRecord 类封装了数据库记录(通常是数据库中表或视图中的一行)的功能和特性。QSqlRecord 支持添加和删除字段,以及设置和检索字段值。

可以使用setValue() 按名称或位置设置记录字段的值;如果要将字段设置为 null,请使用setNull()。要按名称查找字段的位置,请使用indexOf();要查找特定位置的字段名称,请使用fieldName()。使用field() 检索给定字段的QSqlField 对象。 使用contains() 来检查记录中是否包含特定字段名。

在生成将在数据库上执行的查询时,只有那些isGenerated() 返回 true 的字段才会被包含在生成的 SQL 中。

可以通过append() 或insert() 向记录中添加字段,通过replace() 替换字段,并通过remove() 删除字段。使用clear() 可以删除所有字段。字段的数量由count() 提供;所有字段的值均可使用clearValues() 清空(设为 null)。

另请参阅 QSqlField 和QSqlQuery::record()。

成员函数文档

QSqlRecord::QSqlRecord()

构建一个空记录。

另请参阅 isEmpty()、append() 和insert()。

QSqlRecord::QSqlRecord(const QSqlRecord &other)

创建other 的副本。

QSqlRecord 是隐式共享的。这意味着你可以以常数时间复杂度对记录进行复制。

[constexpr noexcept default, since 6.6] QSqlRecord::QSqlRecord(QSqlRecord &&other)

从 `other` 移动并构造一个新的 `QSqlRecord`。

注意: 被移动的对象 other 将处于部分初始化状态,在此状态下,唯一有效的操作是销毁和赋予新值。

此函数于 Qt 6.6 中引入。

[noexcept] QSqlRecord::~QSqlRecord()

销毁该对象并释放所有已分配的资源。

void QSqlRecord::append(const QSqlField &field)

将字段field 的副本追加到记录末尾。

另请参阅 insert()、replace() 和remove()。

void QSqlRecord::clear()

删除该记录的所有字段。

另请参阅 clearValues() 和isEmpty()。

void QSqlRecord::clearValues()

清除记录中所有字段的值,并将每个字段设置为空。

另请参阅 setValue()。

bool QSqlRecord::contains(QAnyStringView name) const

如果记录中存在名为name 的字段,则返回true ;否则返回false 。

注意:在 Qt 6.8 之前的版本中,该函数的参数是QString ,而不是QAnyStringView 。

int QSqlRecord::count() const

返回记录中的字段数。

另请参阅 isEmpty()。

QSqlField QSqlRecord::field(int index) const

返回位于位置index 处的字段。如果index 超出范围,该函数将返回一个默认构造的值。

QSqlField QSqlRecord::field(QAnyStringView name) const

返回名为name 的字段。如果未找到名为name 的字段,则该函数返回一个通过默认构造函数构造的值。

注意:在 Qt 6.8 之前的版本中,该函数接受的是QString ,而不是QAnyStringView 。

这是一个重载函数。

QString QSqlRecord::fieldName(int index) const

返回位于位置index 处的字段名称。如果该字段不存在,则返回空字符串。

另请参阅 indexOf()。

int QSqlRecord::indexOf(QAnyStringView name) const

返回记录中名为name 的字段的位置,如果找不到则返回-1。字段名不区分大小写。如果有多个字段匹配,则返回第一个。

注意:在 Qt 6.8 之前的版本中,此函数接受的是 `QString`,而不是 `QAnyStringView`。

另请参阅 fieldName()。

void QSqlRecord::insert(int pos, const QSqlField &field)

在记录的pos 位置插入字段field 。

另请参阅 append()、replace() 和remove()。

bool QSqlRecord::isEmpty() const

如果记录中没有字段,则返回true ;否则返回false 。

另请参阅 append()、insert() 和clear()。

bool QSqlRecord::isGenerated(int index) const

如果记录在位置index 处有一个字段,且该字段需要生成(默认情况),则返回true ;否则返回false 。

另请参阅 setGenerated()。

bool QSqlRecord::isGenerated(QAnyStringView name) const

如果记录中存在名为name 的字段,且该字段需要生成(默认情况),则返回true ;否则返回false 。

注意:在 Qt 6.8 之前的版本中,此函数接受的是QString ,而不是QAnyStringView 。

这是一个重载函数。

另请参阅 setGenerated()。

bool QSqlRecord::isNull(int index) const

如果字段index 为空,或者位置index 处不存在该字段,则返回true ;否则返回false 。

另请参阅 setNull()。

bool QSqlRecord::isNull(QAnyStringView name) const

如果名为name 的字段为空,或者不存在名为name 的字段,则返回true ;否则返回false 。

注意:在 Qt 6.8 之前的版本中,此函数接受的是QString ,而不是QAnyStringView 。

这是一个重载函数。

另请参阅 setNull()。

QSqlRecord QSqlRecord::keyValues(const QSqlRecord &keyFields) const

返回一个记录,其中包含keyFields 中表示的字段,这些字段的值与字段名称相对应。

void QSqlRecord::remove(int pos)

删除位于位置pos 的字段。如果pos 超出范围,则不执行任何操作。

另请参阅 append()、insert() 和replace()。

void QSqlRecord::replace(int pos, const QSqlField &field)

将位置为pos 的字段替换为给定的field 。如果pos 超出范围,则不执行任何操作。

另请参阅 append()、insert() 和remove()。

void QSqlRecord::setGenerated(QAnyStringView name, bool generated)

将名为name 的字段的生成标志设置为generated 。如果该字段不存在,则不执行任何操作。例如,只有将generated 设置为true的字段才会被包含在由QSqlQueryModel 生成的SQL语句中。

注意:在 Qt 6.8 之前的版本中,此函数接受的是 `QString`,而非 `QAnyStringView`。

另请参阅 isGenerated()。

void QSqlRecord::setGenerated(int index, bool generated)

将字段index 的生成标志设置为generated 。

另请参阅 isGenerated()。

void QSqlRecord::setNull(int index)

将字段index 的值设置为 null。如果该字段不存在,则不执行任何操作。

另请参阅 isNull() 和setValue()。

void QSqlRecord::setNull(QAnyStringView name)

将名为name 的字段值设为null。如果该字段不存在,则不执行任何操作。

注意:在 Qt 6.8 之前的版本中,此函数的参数是 `QString`,而不是 `QAnyStringView`。

这是一个重载函数。

void QSqlRecord::setValue(int index, const QVariant &val)

将位置为index 的字段值设置为val 。如果该字段不存在,则不执行任何操作。

另请参阅 value() 和setNull()。

void QSqlRecord::setValue(QAnyStringView name, const QVariant &val)

将名为name 的字段值设置为val 。如果该字段不存在,则不执行任何操作。

注意:在 Qt 6.8 之前的版本中,此函数的参数是QString ,而不是QAnyStringView 。

这是一个重载函数。

另请参阅 setNull()。

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

将此 SQL 记录与other 进行交换。此操作速度极快,且绝不会失败。

该函数于 Qt 6.6 中引入。

QVariant QSqlRecord::value(int index) const

返回记录中位于位置index 的字段的值。如果index 超出范围,则返回一个无效的QVariant 。

另请参阅 setValue()、fieldName() 和isNull()。

QVariant QSqlRecord::value(QAnyStringView name) const

返回记录中名为name 的字段的值。如果不存在name 字段,则返回一个无效的变体。

注意:在 Qt 6.8 之前的版本中,此函数的参数是QString ,而不是QAnyStringView 。

这是一个重载函数。

另请参阅 indexOf() 和isNull()。

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

如果该对象与other 不相同,则返回true ;否则返回false 。

另请参阅 operator==()。

[noexcept, since 6.6] QSqlRecord &QSqlRecord::operator=(QSqlRecord &&other)

将other 按移动赋值的方式赋值给此QSqlRecord 实例。

注意: 被移动的对象 other 将处于部分初始化状态,在此状态下,唯一有效的操作是销毁和赋值。

该函数在 Qt 6.6 中引入。

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

将该记录设置为other 。

QSqlRecord 该记录是隐式共享的。这意味着你可以以常数时间复杂度对记录进行复制。

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

如果该对象与other 完全相同(即具有相同的字段且顺序一致),则返回true ;否则返回false 。

另请参阅 operator!=()。

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