2014-10-19 48 views
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,所以我不知道如何得到結果。

我可以通過某種方式從綁定查詢中獲得結果嗎?爲什麼這不起作用?

+0

http://qt-project.org/doc/qt-4.8/sql-driver.html#qmysql - 似乎是MySQL驅動程序/ API中的限制。 – Mat 2014-10-19 09:03:49

+0

鏈接文本顯示IN,OUT和INOUT參數。但我不使用OUT或INOUT參數。我想檢索查詢結果記錄。我沒有嘗試使用OUT參數,但是如果鏈接的文本是正確的,那也會失敗。 – Silicomancer 2014-10-19 09:50:09

+0

你正在使用'IN'參數,你不是嗎? – Mat 2014-10-19 09:50:42

回答

0

有兩句話可以在Qt的文檔中找到:

「的MySQL 5只引入了存儲過程在SQL級別的支持,但沒有API控制IN,OUT和INOUT參數。」 (here,Thanks Mat)

「不完全支持使用return語句返回值或返回多個結果集的存儲過程。」 (從here

因此,顯然在Qt/MySQL中綁定參數是相當無用的。關於批量模式,另請參閱this

相關問題