gpt4 book ai didi

mysql - QSqlTableModel 空结果

转载 作者:可可西里 更新时间:2023-11-01 08:22:14 26 4
gpt4 key购买 nike

如果我这样做:

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() 它,但我从不告诉查询在数据库?)

谢谢,

大卫

最佳答案

QSqlRecord record = model->record();

您正在使用 QSqlQueryModel::record()它返回一个“空白”记录,而不是 QSqlQueryModel::record(int row)。你得到的记录不为空:你可以从中得到查询返回的字段的数量和名称。

使用 QSqlQuery 或 QSqlTableModel,您可以指定要使用的数据库连接(请参阅 QSqlTableModel 或 QSqlQuery 构造函数)。如果不这样做,则使用默认数据库连接:请参阅 QSqlDatabase documentation .如果您没有明确为其命名,则您打开的连接是默认连接。

关于mysql - QSqlTableModel 空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com