有没有办法检查QSqlRelationalTableModel
中每列的属性和约束?例如,我想询问我的QSqlRelationalTableModel
对象某个列是否可以包含空值,或者哪个数据类型对该列有效。如何设置/读取QSqlRelationalTableModel列的属性和约束?
3
A
回答
2
你需要得到QSqlField
值模型,这是由
QSqlRecord record = model->database().record(model->tableName());
QSqlField field = record.field(columnIndex);
给出,那么你就可以检查是否字段可以为null,与QSqlField::requiredStatus()
的每一列(如果驱动程序支持查询该属性)并获取其数据类型QSqlField::type()
。
2
从上面的alexisdm的回答中,我写了这个简单的代码片段来输出表中每个字段的属性。张贴在这里为任何有兴趣的人节省打字。
我还发现了一个疑难杂症:如果您使用table_model::record()
或table_model::record(int)
你得到意想不到的(对我)的结果对于某些属性,例如,isAutoValue
似乎总是返回false,即使是指定在数据库中的自动增量字段的字段。但是,对于typeID()
(尽管我无法确定typeID()是什么),您确实得到了实际值,而typeID()
总是使用model->database().record(model->tableName())
返回-1。
QSqlRecord record = table_model->database().record(table_model->tableName());
// the following get isAutoValue() wrong; but have a real typeID()
//QSqlRecord record = table_model->record();
//QSqlRecord record = table_model->record(table_model->rowCount() - 1);
qDebug() << "********** table" << table_model->tableName() << "*********";
for (int i = 0; i < table_model->columnCount(); ++i) {
QSqlField field = record.field(i);
qDebug() << "---------- field" << i << field.name() << "--------";
qDebug() << "default value" << field.defaultValue();
qDebug() << "is auto value" << field.isAutoValue();
qDebug() << "is generated" << field.isGenerated();
qDebug() << "is null" << field.isNull();
qDebug() << "is read only" << field.isReadOnly();
qDebug() << "is valid" << field.isValid();
qDebug() << "length" << field.length();
qDebug() << "precision" << field.precision();
qDebug() << "required status" << field.requiredStatus();
qDebug() << "type" << field.type();
qDebug() << "type id" << field.typeID();
qDebug() << "value" << field.value();
}
相关问题
- 1. MySQL工作台:如何设置某些属性的约束
- 2. 如何设置约束?
- 3. 如何设置SDP约束?
- 4. 属性与约束
- 5. XCode中的属性列表值约束
- 6. 配置设置属性动态读取
- 7. Unity3D刚体约束获取属性
- 8. 为域对象的所有属性设置约束?
- 9. 获取和设置属性
- 10. 获取和设置属性
- 11. 如何设置AVPlayerViewController的布局约束?
- 12. 如何正确设置我的约束?
- 13. 约束线性优化设置
- 14. Protobuf如何设置只读属性
- 15. XAML如何设置只读CLR属性?
- 16. 如何设置只读属性?
- 17. 属性专门化和约束模块
- 18. 约束力的形式的大小和位置属性标签Text属性
- 19. 如何读取由CSS类设置的DIV的属性值?
- 20. 如何读取app.config的值并设置Wix的属性
- 21. 如何获取具有在QSqlRelationalTableModel中设置的关系的列的索引值?
- 22. 如何动态设置UIView约束?
- 23. 如何正确设置动画约束?
- 24. 如何设置约束条件?
- 25. 如何将约束设置为GridBagLayout
- 26. constrOptim中的设置约束
- 27. 设置任务的约束
- 28. 在表上设置列约束(SQL Server)
- 29. 如何获得属性获取或设置属性属性
- 30. 在使用锚定属性设置约束之后,从UIView获取nslayoutconstraints