Postgresql QSqlQueryModel准备语句(使用QSqlQuery)不工作
我在将QSqlQueryModel与预处理语句一起使用时遇到问题。当手动执行语句时,一切正常,但当将其绑定到模型时,它不会执行。另一方面,当我使用“静态”查询(通过QString)设置模型时,模型执行并加载数据。我做错了什么 我准备这样的查询:Postgresql QSqlQueryModel准备语句(使用QSqlQuery)不工作,postgresql,qt5,qsqlquery,Postgresql,Qt5,Qsqlquery,我在将QSqlQueryModel与预处理语句一起使用时遇到问题。当手动执行语句时,一切正常,但当将其绑定到模型时,它不会执行。另一方面,当我使用“静态”查询(通过QString)设置模型时,模型执行并加载数据。我做错了什么 我准备这样的查询: QSqlQuery query; query.prepare(QString("SELECT \ kontrahentid \ , trim(format ('%s %s %s', kontrahentnazwafirmy
QSqlQuery query;
query.prepare(QString("SELECT \
kontrahentid \
, trim(format ('%s %s %s', kontrahentnazwafirmy, kontrahentnazwisko, kontrahentimie) ) as nazwa \
FROM kontrahent \
WHERE %1 ilike ? \
").arg(searchBy));
query.addBindValue(searchString);
if (query.exec()) {
while (query.next()) {
qDebug() << "{" << query.value(0) << ", " << query.value(1) << "}";
}
}
当进行如下查询时,它会起作用:
QSqlQuery query;
query.prepare(QString("SELECT \
kontrahentid \
, trim(format ('%s %s %s', kontrahentnazwafirmy, kontrahentnazwisko, kontrahentimie) ) as nazwa \
FROM kontrahent \
WHERE %1 ilike ? \
").arg(searchBy));
query.addBindValue(searchString);
if (query.exec()) {
while (query.next()) {
qDebug() << "{" << query.value(0) << ", " << query.value(1) << "}";
}
}
if(query.exec()){
while(query.next()){
qDebug()
在将查询对象绑定到之前,是否必须对其运行execute()
模型
是的,医生说:
请注意,查询必须处于活动状态,并且不能处于活动状态
isForwardOnly()
要激活查询,它必须已执行。的文档说明:
已成功执行的SQL语句将查询的状态设置为活动
因此isActive()返回true。否则,查询的状态设置为
在这两种情况下,在执行新SQL语句时
查询位于无效记录上。活动查询必须是
在之前导航到有效记录(以便isValid()返回true)
可以检索值
是的——就是这样……我认为如果QSqlQueryModel本身执行“静态”查询,它应该对准备好的查询执行相同的操作……遗憾的是,QSqlQueryModel文档中缺少这样一个示例……谢谢!