2011-08-24 115 views
0

我有一個相當簡單的調用,我正在試圖做一個數據庫。我已經把所有東西都包圍在try/catch中,如果有陳述,但是......什麼都沒有。我知道我正在建立連接(每次我嘗試運行腳本時,都會以MySQL爲增量進行連接重新計數),但它似乎永遠不會返回。代碼是:mysqlpp查詢沒有從執行返回

if (!conn.connect(db, server, username, pass)) 
{ /* Log error to a file */} 
try 
{ 
    mysqlpp::Query query = conn.query(); 
    query << "CALL db.test('1', '2')"; 
    std::cout << "About to call query" << std::endl; 
    if (mysqlpp::StoreQueryResult res = query.store()) 
    { 
     std::string toReturn = ""; 
     res[0][0].to_string(toReturn); 
     std::cout << "Query called. Result: " << toReturn << std::endl; 
    } 
} 
catch(Exception e) 
{ /*Output caught exception*/ } 

,我也得到:

About to call query 

我的唯一輸出。 我有更多的調試在那裏(查詢正在放在一起,連接是正確的,等)。 任何人都知道可能發生了什麼,或者我應該接下來檢查什麼?

謝謝!

- 編輯:如果我直接從MySQL運行調用,一切都按預期工作,所以這不會導致問題。

回答

0

你應該在conn.query()中調用查詢;像

std::cout << "About to call query" << std::endl; 
mysqlpp::Query query = conn.query("CALL db.test('1', '2')"); 
if (mysqlpp::StoreQueryResult res = query.store()) 
{ 
    std::string toReturn = "";  //this is not necessary 
    res[0][0].to_string(toReturn); //this is not necessary 

    for (size_t i = 0; i < res.num_rows(); ++i) 
    { 
     std::cout << "Query called. Result: " << res[i][0] << std::endl; 
    } 
} 

可以參考http://tangentsoft.net/mysql++/doc/html/userman/tutorial.html的例子