Qt扫盲-QSqlField 理论总结

一、QSqlField 类概述

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

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

二、QSqlField 使用

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

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

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

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

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

QSqlQuery query;
      ...
QSqlRecord record = query.record();
QSqlField field = record.field("country");

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()检查记录是否包含特定的字段名。

扫描二维码关注公众号,回复: 16842689 查看本文章

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

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

四、QSqlRecord的使用

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

猜你喜欢

转载自blog.csdn.net/qq_43680827/article/details/133376226
今日推荐