0

我正在尝试使用 Qt 调用 MySQL 服务器存储过程。该过程返回我要检索的多行数据。

我尝试的第一个片段效果很好:

QSqlQuery query("CALL GetOrderItems(323)", dataBase);
qDebug() << query.first();

它还返回所需的数据,并且query.first()像预期的那样是真的。

然后我尝试使用 Qt 文档建议的参数绑定插入参数。我尝试了以下片段。第一个使用索引占位符,第二个关键字占位符。

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 所以我不知道如何得到结果。

我可以通过某种方式从绑定查询中获得结果吗?为什么这不起作用?

4

1 回答 1

1

在 Qt 文档中可以找到两句话:

“MySQL 5 在 SQL 级别引入了存储过程支持,但没有用于控制 IN、OUT 和 INOUT 参数的 API。” (从这里,谢谢垫)

“不完全支持使用 return 语句返回值或返回多个结果集的存储过程。” (从这里

所以显然 Qt/MySQL 中的绑定参数是非常无用的。另请参阅有关批处理模式的内容。

于 2014-10-19T10:22:38.880 回答