如何解决:“ MySQL_Prepared_ResultSet :: getInt:'columnIndex的值无效”

时间:2019-05-22 13:03:41

标签: c++ mysql

当我尝试从C ++项目中的MySQL数据库中选择一些行时,出现错误:

MySQL error code: 0 MySQL_Prepared_ResultSet::getInt: invalid value of 'columnIndex'  

在数据库中,“ id”列的数据类型为INT(11)。

我从其他列获取字符串值没有问题。我还尝试将getInt()函数中的参数设置为字符串值-列名以及列号。

这是我的代码:

    preparedStatementPtr = shared_ptr < sql::PreparedStatement >( connectionPtr->prepareStatement(
            "SELECT description, category FROM plans WHERE date = ? " ) );
    string d = boost::gregorian::to_iso_extended_string( date );
    preparedStatementPtr->setString( 1, d );
    preparedStatementPtr->execute();
    resultSetPtr = shared_ptr < ResultSet >( preparedStatementPtr->getResultSet() );

    int id;
    string description;
    string category;

    while ( resultSetPtr->next() )
    {
        id = resultSetPtr->getInt( "id" );
        description = resultSetPtr->getString( "description" );
        category = resultSetPtr->getString( "category" );
        plans.emplace_back( std::shared_ptr < Plan >( new Plan( id, description, category, date) ) );
    }

我应该怎么做才能从“ id”列中获取值?预先感谢您的帮助。

编辑:当我不使用准备好的语句时,获取ID即可工作,如以下代码所示:

    resultSetPtr = shared_ptr < sql::ResultSet > ( statementPtr->executeQuery (
            "SELECT * FROM plans WHERE date = '2019-05-22'" ) );


    while ( resultSetPtr->next() )
    {
        id = resultSetPtr->getInt( "id" );
        description = resultSetPtr->getString( "description" );
        category = resultSetPtr->getString( "category" );
        plans.emplace_back( std::shared_ptr < Plan >( new Plan( id, description, category, date ) ) );
    }

1 个答案:

答案 0 :(得分:0)

我已经解决了。我忘记了SELECT语句中的“ id”列。