有沒有辦法檢查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