点击上方“Qt学视觉”,选择“星标”公众号重磅干货,第一时间送达
想要学习的同学们还请认真阅读每篇文章,相信你一定会有所收获
1、QSqlTableModel的主要函数如下
1、QSqlDatabase database() const
返回其数据库连接
2、void setTable(const QString &tableName)
设置数据表名称,不立即读取记录,但会提取字段信息
3、QString tableName() const
但会设置的数据表名称
4、void setFilter(const QString &filter)
设置记录过滤条件
5、void setSort(int column, Qt::SortOrder order)
设置排序字段和排序规则,需调用select()才生效
6、void sort(int column, Qt::SortOrder order)
按列号和排序规则立即进行排序并获取数据
7、void setEditStrategy(QSqlTableModel::EditStrategy strategy)
设置编辑策略
8、bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)
设置表头,一般用于设置字段的显示名称
9、int fieldIndex(const QString &fieldName) const
根据字段名称返回其在模型中的字段序号,若字段不存在则返回-1
10、bool isDirty() const
若有未更新到数据库的修改,就返回true,否则返回false
11、QSqlIndex primaryKey() const
返回数据表的主索引
12、int rowCount(const QModelIndex &parent = QModelIndex()) const
返回记录条数
13、bool select()
查询数据表的数据,并使用设置的排序和过滤规则
14、bool selectRow(int row)
刷新获取指定行号的记录
15、void clear()
清除数据模型,释放所有获取的数据
16、QSqlRecord record() const
返回一条空记录,只有字段名,可用来获取字段信息
17、QSqlRecord record(int row) const
返回行号为row的一条记录,包含记录的数据
18、bool setRecord(int row, const QSqlRecord &values)
更新一条记录的数据到数据模型,源和目标之间用过字段名称匹配,而不是按位置匹配
19、bool insertRecord(int row, const QSqlRecord &record)
在行号row之前插入一条记录
20、bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
在行号row之前插入count空行,编辑策略为OnFieldChange或OnRowChange时只能插入一行
21、bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
从行号row开始,删除count行,若编辑策略为OnManualSubmit,需调用submitAll()才从数据表里删除
22、void revertRow(int row)
取消行号为row的记录的修改
23、void revert()
编辑策略为OnRowChange或OnFieldChange时,取消当前行的修改,对OnManualSubmit编辑策略无效
24、void revertAll()
取消所有未提交的修改
25、bool submit()
提交当前行的修改到数据库,对OnManualSubmit编辑策略无效
26、bool submitAll()
提交所有未更新的修改到数据库,若成功则返回true,否则返回false,错误的详细信息可以从lastError()获取
2、QSqlRecord的主要函数如下
QSqlRecord封装了对记录的字段定义和数据的操作
1、void clear()
清除记录的所有字段定义和数据
2、void clearValues()
清除所有字段的数据,将字段数据内容设置为null
3、bool contains(const QString &name) const
判断记录是否含有名称为name的字段
4、bool isEmpty() const
若字段里没有字段返回true,否则返回false
5、int count() const
返回记录的字段个数
6、QString fieldName(int index) const
返回序号为index的字段的名称
7、int indexOf(const QString &name) const
返回字段名称为name的字段的序号,如果字段不存在则返回-1
8、QSqlField field(const QString &name) const
返回字段名称为name的字段对象
9、QVariant value(const QString &name) const
返回字段名称为name的字段的值
10、void setValue(const QString &name, const QVariant &val)
设置字段名称为name的字段的值为val
11、bool isNull(const QString &name) const
判断字段名称为name的字段数据是否为null
12、void setNull(const QString &name)
设置名称为name的字段的值为null
3、QSqlField的主要函数如下
1、void clear()
清除字段数据,设为NULL,如果字段是只读的,则不清除
2、bool isNull() const
判断字段值是否为NULL
3、void setReadOnly(bool readOnly)
设置一个字段为只读,只读的字段不能用setValue()函数设置值