【问题标题】:Default DB values during inserting new record to QSqlTableModel将新记录插入 QSqlTableModel 期间的默认 DB 值
【发布时间】:2012-06-29 04:55:31
【问题描述】:

如何根据 DB 的默认值向 QSqlTableModel 插入新记录? 升级版: 我想打电话给pTableModel->insertRecord(0, pTableModel->record(0));pTableModel->insertRecord(0, pTableModel->record());pTableModel->insertRecord(QSqlDatabase::database().record("tableName"));pTableModel->insertRow(0);

结果一样,所有字段都是NULL而不是DB的默认值。

【问题讨论】:

  • 这个问题非常模糊。 What have you tried?这是QT题还是数据库题?我们无法读懂你的想法。

标签: qt qsqltablemodel


【解决方案1】:

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

【讨论】:

  • 谢谢。实际上,由于某些原因,我现在不使用这个想法。但我的想法是在不向数据库提交新记录的情况下获取记录的默认数据库值。但是如果不编写额外的代码,这似乎是不可能的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 2013-06-11
相关资源
最近更新 更多