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。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值