【发布时间】:2014-12-14 10:43:48
【问题描述】:
我正在尝试使用 Qt 调用 MySQL 服务器存储过程。该过程返回我要检索的多行数据。
我尝试的第一个 sn-p 工作正常:
QSqlQuery query("CALL GetOrderItems(323)", dataBase);
qDebug() << query.first();
它还返回所需的数据,并且query.first() 像预期的那样为真。
然后我尝试使用 Qt 文档建议的参数绑定插入参数。我尝试了以下 sn-ps。第一个使用索引占位符,第二个关键字占位符。
QSqlQuery query(dataBase);
qDebug() << query.prepare("CALL GetOrderItems(?)");
query.bindValue(0, 323);
qDebug() << query.exec();
qDebug() << query.first();
QSqlQuery query(dataBase);
qDebug() << query.prepare("CALL GetOrderItems(:myparam)");
query.bindValue(":myparam", 323);
qDebug() << query.exec();
qDebug() << query.first();
这两个查询都执行得很好。但是query.first() 返回 false 所以我不知道如何得到结果。
我可以通过某种方式从绑定查询中获得结果吗?为什么这不起作用?
【问题讨论】:
-
qt-project.org/doc/qt-4.8/sql-driver.html#qmysql - 似乎是 MySQL 驱动程序/API 的限制。
-
链接的文字说明了 IN、OUT 和 INOUT 参数。但我不使用 OUT 或 INOUT 参数。我想检索查询结果记录。我没有尝试使用 OUT 参数...但是如果链接的文本是正确的,那也会失败。
-
你在使用
IN参数,不是吗? -
是的,但我认为只有 OUT 和 INOUT 参数有问题。在所有查询执行无误后。
-
引用你的话:“链接的文字说 IN、OUT 和 INOUT 参数。”
标签: mysql qt stored-procedures sqlbindparameter