QSqlTableModel empty result

If I do this:

QSqlQuery searchQuery(QString("select * from people where id = %1").arg(1));
if (searchQuery.next())
  {
  std::cout << "Name: " << searchQuery.value(1).toString().toStdString() << std::endl;
  }

Output (as expected):

Name: David

However, if I do this:

 QSqlTableModel *model = new QSqlTableModel;
    // Set used table
    model->setTable("people");
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
// Set where clause
model->setFilter(QString("id=%1").arg(1));
model->select();

// Read result
QSqlRecord record = model->record();
if (!record.isEmpty())
  {
  std::cout << "Name from model: " << record.value(1).toString().toStdString();
  }

The record is not empty, but the output is empty:

Name from model: 

Can anyone see what I did wrong using QSqlTableModel?

Also, with both methods, I don’t understand how you do not need to specify which database to use (i.e. I create QSqlDatabase and .open (), but I will never say that the query works on databases?)

Thank,

David

+3
source share
1 answer
QSqlRecord record = model->record();

QSqlQueryModel:: record(), "" , QSqlQueryModel:: record (int row). , , : , .

QSqlQuery QSqlTableModel , (. QSqlTableModel QSqlQuery). , : . QSqlDatabase. , , , .

+3

Source: https://habr.com/ru/post/1780228/


All Articles