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;
model->setTable("people");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setFilter(QString("id=%1").arg(1));
model->select();
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
source
share