MySQL 连接器/C++ 1.1 开发人员指南  / 第 7 章连接器/C++ 教程  / 7.3 使用 PreparedStatement 对象调用存储过程  /  7.3.3 对返回结果集的存储过程使用 PreparedStatement

7.3.3 将 aPreparedStatement用于返回结果集的存储过程

此示例说明如何处理存储过程生成的结果集。

  1. 复制教程框架代码:

    $> cp framework.cpp ps_scenario3.cpp
  2. 将以下代码添加到try教程框架的块中:

    sql::Driver * driver = get_driver_instance();
    
    std::auto_ptr< sql::Connection > con(driver->connect(url, user, pass));
    con->setSchema(database);
    
    std::auto_ptr< sql::PreparedStatement >  pstmt;
    std::auto_ptr< sql::ResultSet > res;
    
    pstmt.reset(con->prepareStatement("CALL get_data()"));
    res.reset(pstmt->executeQuery());
    
    for(;;)
    {
      while (res->next()) {
        cout << "Name: " << res->getString("Name")
             << " Population: " << res->getInt("Population")
             << endl;
      }
      if (pstmt->getMoreResults())
      {
        res.reset(pstmt->getResultSet());
        continue;
      }
      break;
    }
  3. 按照第 7.1 节“先决条件和背景信息” 中的说明编译程序 。

  4. 运行程序:

    $> ./ps_scenario3
  5. 记下生成的输出。

该代码使用 PreparedStatement对象执行存储过程。标准 do/while构造用于确保获取所有结果集。getInt返回值是使用和getString 方法 从结果集中获取的 。