当我尝试从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 ) ) );
}
答案 0 :(得分:0)
我已经解决了。我忘记了SELECT语句中的“ id”列。