• Qt扫盲-QSqlField 理论总结


    一、QSqlField 类概述

    QSqlField 表示数据库表 或 视图中单个列的特征,说白了就是数据库记录里的数据字段。如数据类型和列名。字段还包含数据库列的值,可以查看或更改。

    就像下面的数据表例子一样,QSqlField 可以代表id 列下面的某一条记录的一个值。
    在这里插入图片描述
    这个类与 QSqlRecord 的关系如下图,一个QSqlRecord 本质上是是维护了一组QSqlField 对象,我们查询从数据库查询出来的数据集里面的一条记录,就可以在Qt 里面用 QSqlRecord 表示。
    在这里插入图片描述

    二、QSqlField 使用

    QSqlField 字段数据值存储为 QVariant。不允许使用不兼容的类型。例如:

    QSqlField field("age", QVariant::Int);
    field.setValue(QPixmap());  // WRONG
    
    • 1
    • 2

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

    QSqlField field("age", QVariant::Int);
    field.setValue(QString("123"));  // casts QString to int
    
    • 1
    • 2

    很少在应用程序代码中显式地创建QSqlField对象。它们通常通过已经包含一组字段的QSqlRecords间接访问。例如:

    QSqlQuery query;
          ...
    QSqlRecord record = query.record();
    QSqlField field = record.field("country");
    
    • 1
    • 2
    • 3
    • 4

    QSqlField对象可以提供有关该字段的一些元数据,例如它的name()、variant type()、length()、precision()、defaultValue()、typeID(),以及它的requiredStatus()、isGenerated()和isReadOnly()。可以检查字段的数据是否为null(),并取得其value()。编辑数据时可以使用setValue()设置,也可以使用clear()将其设置为NULL。

    三、QSqlRecord类概述

    QSqlRecord 类封装了数据库记录(通常是数据库中的表或视图中的一行)的功能和特征

    QSqlRecord 支持添加和删除字段,以及设置和检索字段值。

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

    当查询在数据库上执行时,只有 isGenerated() 为true的字段才包含在生成的SQL中。

    一条记录可以用 append() 或 insert() 添加字段,用 replace() 替换字段,用 remove() 删除字段。使用 clear() 可以删除所有字段。字段的数量由 count() 给出;所有的值都可以使用 clearValues() 清除 (变为null)。

    四、QSqlRecord的使用

    这个类代表的是一条数据库记录,这个主要是在 查询出数据库结果,来解析结果,或者在构造需要插入到数据库对象的时候使用。在 Qt 数据库模块 里面这个类就是所有 sql 的查询结果的接口。

  • 相关阅读:
    『现学现忘』Git后悔药 — 34、git commit --amend 命令
    [附源码]java毕业设计校园失物招领管理系统
    MoeCTF2023web
    【iOS开发-AFNetWorking下的POST和GET】
    Ton 区块链的官方 类ERC20-Token 智能合约代码-Transfer部分解析
    nodejs项目实例知识信息分享平台
    【C++】引用
    JAVASE语法零基础——继承1
    Citespace、vosviewer、R语言文献计量学 、SCI
    基于改进非局部均值的红外图像混合噪声去除方法
  • 原文地址:https://blog.csdn.net/qq_43680827/article/details/133376226