• Qt SQL:QSqlField、QSqlRecord、QSqlIndex、QSqlError


    QSqlField

    一、描述

    QSqlField 表示数据库表或视图中单个列的特征。可用于数据库列值的查看或更改。

    字段数据值存储为 QVariants。不允许使用不兼容的类型。

    1. QSqlField field("age", QMetaType::fromType<int>());
    2. field.setValue(QPixmap()); // 警告

    字段将在可能的情况下尝试将某些数据类型转换为该字段数据类型:

    1. QSqlField field("age", QMetaType::fromType<int>());
    2. field.setValue(QString("123")); // 转换 QString 为 int

    QSqlField 对象很少在应用程序代码中显式创建。通常是通过已经包含字段列表的 QSqlRecord 间接访问。例如:

    1. QSqlQuery query;
    2. ...
    3. QSqlRecord record = query.record();
    4. 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。

  • 相关阅读:
    C. k-Amazing Numbers(思维)
    双键稀土铕配合物荧光单分散荧光微球/单分散稀土铝酸盐多晶荧光微球/键合型含铕聚苯乙烯微球性能分析
    【运维/安装】Flink + MinIO:实现light-weighting思路下的集群(集群、高可用&&POC、快速搭建)
    spark 任务优化
    学生宿舍护眼台灯怎么样选择?适合宿舍使用的五款台灯
    浅谈electron
    swagger-01-swagger介绍
    Docker实现挂载的N种方式
    就知道你喜欢中文版:Spread .NET 15.2 FOR WPF
    全栈资源库【All】
  • 原文地址:https://blog.csdn.net/kenfan1647/article/details/126641115