Если я сделаю это:
QSqlQuery searchQuery(QString("select * from people where id = %1").arg(1));
if (searchQuery.next())
{
std::cout << "Name: " << searchQuery.value(1).toString().toStdString() << std::endl;
}
Вывод (как и ожидалось):
Name: David
Однако, если я сделаю это:
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();
}
Запись не пуста, но вывод пуст:
Name from model:
Кто-нибудь может увидеть, что я сделал неправильно, используя QSqlTableModel?
Кроме того, с обоими методами я не понимаю, как вам не нужно указывать ему, какую базу данных использовать (т. Е. Я создаю экземпляр QSqlDatabase и .open (), но я никогда не советую запросу работать с базы данных?)
Спасибо
David