Qt SQL:QSqlField、QSqlRecord、QSqlIndex、QSqlError
Qt SQL:QSqlField、QSqlRecord、QSqlIndex、QSqlError
QSqlField
一、描述
QSqlField 表示数据库表或视图中单个列的特征。可用于数据库列值的查看或更改。
字段数据值存储为 QVariants。不允许使用不兼容的类型。
QSqlField field("age", QMetaType::fromType<int>());field.setValue(QPixmap()); // 警告
字段将在可能的情况下尝试将某些数据类型转换为该字段数据类型:
QSqlField field("age", QMetaType::fromType<int>());field.setValue(QString("123")); // 转换 QString 为 int
QSqlField 对象很少在应用程序代码中显式创建。通常是通过已经包含字段列表的 QSqlRecord 间接访问。例如:
QSqlQuery query;...QSqlRecord record = query.record();QSqlField field = record.field("country");
二、类型成员
1、enum QSqlField::RequiredStatus:指定该字段是必需的还是可选的。
- Required:插入记录时必须指定字段。
- Optional:插入记录时不必指定字段。
- Unknown:数据库驱动程序无法确定该字段是必需的还是可选的。
三、成员函数
1、void clear()
如果该字段不是只读的,则清除字段的值并将其设置为 NULL。
2、bool isNull()
字段的值是否为 NULL。
4、bool isValid()
字段的 QVariants 类型是否有效。
5、void setAutoValue(bool autoVal)
设置是否将该字段标记为自动生成的值。
6、void setDefaultValue(const QVariant &value)
设置字段使用的默认值。
7、void setLength(int fieldLength)
设置字段的长度。
对于字符串,这是字符串可以容纳的最大字符数;其他类型的含义有所不同。
8、void setName(const QString &name)
设置字段的名称。
9、void setPrecision(int precision)
设置字段的精度。这仅影响数字类型的字段。
10、void setReadOnly(bool readOnly)
设置字段值的只读标志。只读字段不能使用 setValue() 设置其值,也不能使用 clear() 将其清除为 NULL。
11、void setRequired(bool required)
设置字段的必需状态(必选/可选)。
12、void setRequiredStatus(QSqlField::RequiredStatus required)
设置字段的必填状态。
13、void setValue(const QVariant &value)
设置字段的值。如果该字段是只读的(isReadOnly() 返回 true),则不进行任何操作。
如果 value 的数据类型与字段的当前数据类型不同,则会尝试将其转换为正确的类型。
要将值设置为 NULL时应使用 clear() 而不是使用此函数。
14、QString tableName()
返回字段所属的数据表名称。
QSqlRecord
一、描述
QSqlRecord 类封装了一个数据库记录。支持添加和删除字段以及设置和检索字段值。
二、成员函数
1、void append(const QSqlField &field)
将字段的副本附加到记录的末尾。
2、void clear()
删除所有记录的字段。
3、void clearValues()
清除记录中所有字段的值,并将每个字段设置为空。
4、bool contains(const QString &name)
记录中是否有一个名为 name 的字段。
5、int count()
返回记录中的字段数。
6、QSqlField field(int index)
返回位置 index 处的字段。
QSqlField field(const QString &name)
返回名为 name 的字段。
7、QString fieldName(int index)
返回位置 index 处的字段名称。
8、int indexOf(const QString &name)
返回记录中名为 name 的字段的位置,如果找不到,则返回 -1。
字段名称不区分大小写。如果多个字段匹配,则返回第一个。
9、void insert(int pos, const QSqlField &field)
在记录中的位置 pos 处插入字段字段。
10、bool isEmpty()
记录中是否没有字段。
11、bool isNull(const QString &name)
如果名为 name 的字段为 null 或没有名为 name 的字段,则返回 true。
bool isNull(int index)
12、QSqlRecord keyValues(const QSqlRecord &keyFields)
返回包含在 keyFields 中表示的字段的记录。
13、void remove(int pos)
删除位置 pos 的字段。
14、void replace(int pos, const QSqlField &field)
用给定的字段替换位置 pos 的字段。
15、void setNull(int index)
将字段索引的值设置为 null。
void setNull(const QString &name)
16、void setValue(int index, const QVariant &val)
将位置索引处的字段的值设置为 val。
void setValue(const QString &name, const QVariant &val)
QSqlIndex
一、描述
QSqlIndex 类提供了操作和描述数据库索引的函数。索引是指数据库中的单个表或视图。
二、成员函数
1、void append(const QSqlField &field)
将字段 field 附加到索引字段列表中。
void append(const QSqlField &field, bool desc)
将字段 field 附加到索引字段列表中。desc 为 true 则该字段将附加升序排序。
2、void setCursorName(const QString &cursorName)
设置与索引关联的游标的名称。
3、void setDescending(int i, bool desc)
如果 desc 为 true,则字段 i 按降序排序,否则字段 i 按升序排序。
4、void setName(const QString &name)
设置索引的名称。
QSqlError
一、描述
QSqlError 类提供 SQL 数据库错误信息。
二、类型成员
1、enum QSqlError::ErrorType:此枚举类型描述了发生错误的上下文。
- NoError:没有发生错误。
- ConnectionError:连接错误。
- StatementError:SQL 语句语法错误。
- TransactionError:事务失败错误。
- UnknownError:未知错误。
三、成员函数
1、QString databaseText()
返回数据库报告的错误文本。
2、QString driverText()
返回驱动程序报告的错误文本。
3、bool isValid()
4、QString nativeErrorCode()
返回特定于数据库的错误代码,如果无法确定,则返回空字符串。
5、QString text()
这是一个便捷的函数,它返回连接成单个字符串的 databaseText() 和 driverText()。
6、QSqlError::ErrorType type()
返回错误类型,如果无法确定类型,则返回 -1。
- mysql语句转为oracle语句
- Http Digest 认证
- module 与 component 的区别
- 各种int的取值范围
- DEV GridView 部分属性
- Cygwin、Msys、MinGW、Msys2的区别与联系
- 职场经验
- 【Yolo】Jetson Orin Nano下部署 YoloV5
- Service Principal 介绍
- Anchor Boxes
- cruisecontrol 配置
- win server服务器 关闭危险端口 135,137,138,139,445的方法
- Mysql与Postgresql常用命令比较
- 类 SimpleDateFormat
- const和extern用法
- 兔子吃狼 引发的人力资源故事
- Qt QSqlQueryModel实现查询数据库内容