Когда я пытаюсь выбрать некоторые строки из базы данных MySQL в своем проекте C++, я получаю сообщение об ошибке:
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»? Спасибо заранее за любую помощь.
Обновлено: Получение идентификатора работает, когда я не использую подготовленный оператор, как в следующем коде:
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 ) ) );
}
Я только что решил это. Я забыл о столбце «id» в операторе SELECT.