使用绑定调用服务器存储过程

时间:2014-10-19 08:51:45

标签: mysql qt stored-procedures sqlbindparameter

我正在尝试使用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,所以我不知道如何得到结果。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

所以Qt / MySQL中的绑定参数显然很无用。另请参阅this关于批处理模式。