将新记录插入到QSqlTableModel期间的默认DB值

问题描述:

如何将新记录插入到QSqlTableModel相对于DB的默认值? UPD: 我试图打电话pTableModel->insertRecord(0, pTableModel->record(0));pTableModel->insertRecord(0, pTableModel->record());pTableModel->insertRecord(QSqlDatabase::database().record("tableName"));pTableModel->insertRow(0);将新记录插入到QSqlTableModel期间的默认DB值

结果相同,所有字段都是空的,而不是数据库的默认值。

+0

这个问题是非常模糊的。 [你有什么尝试?](http://whathaveyoutried.com)这是一个QT问题或数据库问题?我们无法读懂你的想法。 –

+0

我已经延长了我的问题。 – Funt

您在第0行插入的事实可能是一个问题。当我尝试这样做时,当我稍后要求第1行的记录(这是插入的记录insertRecord(0, ...)的呼叫之后)时,我没有得到我期望的记录。另外,您是否拨打pTableModel->submit()pTableModel->submitAll()?如果不是,你的记录永远不会被提交给数据库。

此代码的工作对我来说:

QSqlRecord rec(pTableModel->record()); 

// Insert at end of table 
pTableModel->insertRecord(-1, rec); 
pTableModel->submitAll(); 
// Or, pTableModel->submit(), depending on the model's edit strategy 

// Grab the last row. It should be the one just inserted. 
QSqlRecord writtenRec(pTableModel->record(pTableModel->rowCount() - 1)); 
+0

谢谢。其实,现在我不会因为某些原因使用这个想法。 但我的想法是获取记录的默认数据库值,而不向数据库提交新记录。但是,似乎这不可能没有编写额外的代码:) – Funt