I have a table that holds large data.
I want to fetch all the data and process them one by one.
The API for fetching result sets is identical for (simple) statements
and prepared statements. If your query returns one result set, use
sql::Statement::executeQuery() or
sql::PreparedStatement::executeQuery() to run your query. Both methods
return sql::ResultSet objects. By default, Connector/C++ buffers all
result sets on the client to support cursors.
It says by default it buffers all results sets on the client.
How can I disable that?
解决方案
At the statement, you can define the type of the result set. Using TYPE_FORWARD_ONLY leads to unbuffered result sets as defined in mysql release notes:
... Implemented getResultSetType() and setResultSetType() for
Statement. Uses TYPE_FORWARD_ONLY, which means unbuffered result set
and TYPE_SCROLL_INSENSITIVE, which means buffered result set.
Hope it helps.