0

データベースに対して実行しようとしているかなり単純な呼び出しがあります。すべてを 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 から直接呼び出しを実行すると、すべてが期待どおりに機能するため、問題は発生しません。

4

1 に答える 1

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を参照してください。

于 2011-09-12T10:19:45.960 に答える