• MySql: ”Commands out of sync“Error (Connect/C++)


    使用 Connector/C++ 查询 Mysql , 连续调用存储过程时

    会出现如下:

    Commands out of sync; you can't run this command now,state:HY000

    出现原因可以看这里:http://stackoverflow.com/questions/17115919/mysql-commands-out-of-sync-error-c-connector

    这一句:

    Because CALL can return multiple results, process them using a loop that calls mysql_next_result() to determine whether there are more results. "

    Connector/C++ 封装后,使用  getMoreResults() 函数来读取下一个 resultset;

    例子如下:

         // 查询存储过程
            prepareState.reset(con->prepareStatement("call test.testproc1(?)"));
            prepareState->setInt(1,1001);
            prepareState->executeUpdate();
    
            result.reset(prepareState->getResultSet());
            // 输出结果    
            while(result->next())
            {
                int id = result->getInt("id");
                string name = result->getString("name");
            }
    
            while(prepareState->getMoreResults())                            //注意这里, 调用 getMoreResults() 把所有的 resultset读出来
            {
                result.reset(prepareState->getResultSet());
                
                //对下一组result set 做某些东西
            }
          
            prepareState.reset(con->prepareStatement("call test.testproc3(?)"));
            prepareState->setInt(1,1001);
            prepareState->executeUpdate();
    
            result.reset(prepareState->getResultSet());
            // 输出结果    
            while(result->next())
            {
                int id = result->getInt("id");
                string name = result->getString("name");
            }
    
            while (prepareState->getMoreResults())
                result.reset(prepareState->getResultSet());
  • 相关阅读:
    中文和英文
    文件字符流
    Java IO File
    关于整数拆分的递归法与母函数法
    图论·Dijkstra·HDU2066
    图论·Floyd算法·HDU2544&1874 (伪)2066
    关于 图论·并查集·HDU1232&1856
    Power of Cryptography
    Y2K Accounting Bug
    整数划分
  • 原文地址:https://www.cnblogs.com/sixbeauty/p/4798879.html
Copyright © 2020-2023  润新知