mysqlpp查询没有从执行返回

时间:2011-08-24 01:13:43

标签: mysql++

我正在尝试对数据库做一个相当简单的调用。我在try / catch和if语句中包含了所有内容,但是......没有。我知道我正在建立连接(每次我尝试运行脚本时,MySQL中的连接引用都会增加),但它似乎永远不会返回。代码是:

 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运行呼叫,一切都按预期工作,所以这不会导致问题。

1 个答案:

答案 0 :(得分: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获取示例