多个表上的 QSqlTableModel
QSqlTableModel on multiple tables
我在数据库上使用 Qt 的 模型视图编程,其中一个对象使用多个 table 表示。假设以下对象和对应的数据库 tables 完全符合我的设计:
TagObject
- id
- name
- usable
- information
tag_table
- id
- name
- usable
tag_info_table
- id_ref
- info
如您所见,信息 属性 被分隔成另一个 table 以防止存在 NULL 因为这个 属性 是可选的。
在数据库中,我有一个视图将值聚合为一个 'table',可以使用 QSqlTableModel
查询。请注意,INSERTing 数据无法通过这种方式实现。据我所知,Qt 的 类 不支持数据库设计,QSqlTableModel
和 QSqlRelationalTableModel
都不支持。 (另外 QSqlQueryModel
根本不支持插入,所以这是不可能的。)
我错过了什么吗?有没有办法使用 Qt 的 SQL 类 来做到这一点?或者是实现此子类化的唯一方法 QSqlQueryModel
正如所指出的那样 here?
The model is read-only by default. To make it read-write, you must subclass it and reimplement setData() and flags(). Another option is to use QSqlTableModel, which provides a read-write model based on a single database table.
编辑: 至于子类化,我发现 this reference 是一个不错的切入点。
理想情况下,视图应该有适当的触发器来修改基础 tables。使视图 writable 并且您的问题消失:您可以直接在该视图上使用 QSqlTableModel
然后。
或者,您可以为每个 table 设置一个 QSqlTableModel
,然后编写一个支持在源模型之间插入和转换并形成 writable 视图的自定义代理模型.这比编写 SQL 触发器要多。
我在数据库上使用 Qt 的 模型视图编程,其中一个对象使用多个 table 表示。假设以下对象和对应的数据库 tables 完全符合我的设计:
TagObject
- id
- name
- usable
- information
tag_table
- id
- name
- usable
tag_info_table
- id_ref
- info
如您所见,信息 属性 被分隔成另一个 table 以防止存在 NULL 因为这个 属性 是可选的。
在数据库中,我有一个视图将值聚合为一个 'table',可以使用 QSqlTableModel
查询。请注意,INSERTing 数据无法通过这种方式实现。据我所知,Qt 的 类 不支持数据库设计,QSqlTableModel
和 QSqlRelationalTableModel
都不支持。 (另外 QSqlQueryModel
根本不支持插入,所以这是不可能的。)
我错过了什么吗?有没有办法使用 Qt 的 SQL 类 来做到这一点?或者是实现此子类化的唯一方法 QSqlQueryModel
正如所指出的那样 here?
The model is read-only by default. To make it read-write, you must subclass it and reimplement setData() and flags(). Another option is to use QSqlTableModel, which provides a read-write model based on a single database table.
编辑: 至于子类化,我发现 this reference 是一个不错的切入点。
理想情况下,视图应该有适当的触发器来修改基础 tables。使视图 writable 并且您的问题消失:您可以直接在该视图上使用 QSqlTableModel
然后。
或者,您可以为每个 table 设置一个 QSqlTableModel
,然后编写一个支持在源模型之间插入和转换并形成 writable 视图的自定义代理模型.这比编写 SQL 触发器要多。