当我尝试从 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 ) ) );
}
最佳答案
我刚刚解决了这个问题。我忘记了 SELECT 语句中的“id”列。
关于c++ - 如何修复: "MySQL_Prepared_ResultSet::getInt: invalid value of ' columnIndex",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56257473/