2012-06-27 38 views
0

如何將新記錄插入到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

您在第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