MySQL-запрос не возвращается из выполнения - PullRequest
0 голосов
/ 24 августа 2011

У меня довольно простой вызов, который я пытаюсь сделать в базу данных. У меня все есть в 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

как мой единственный выход. У меня есть больше отладки там (запрос составляется правильно, соединение правильно и т. Д.). Кто-нибудь знает, что может происходить, или что я должен проверить дальше?

Спасибо!

- Edit: если я запускаю вызов прямо из MySQL, все работает как положено, так что это не вызывает проблемы.

1 Ответ

0 голосов
/ 12 сентября 2011

Вы должны вызвать запрос внутри 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 для примеров

...