...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Executes a text query or prepared statement.
template< classExecutionRequest
, classResultsType
, class CompletionToken> auto async_execute( ExecutionRequest&& req, ResultsType& result, diagnostics& diag, CompletionToken&& token);
Sends req
to the server
for execution and reads the response into result
.
result
may be either
a results
or static_results
object. req
should may be either a type convertible
to string_view
containing valid
SQL or a bound prepared statement, obtained by calling statement::bind
. If a string, it must be
encoded using the connection's character set. Any string parameters provided
to statement::bind
should also be encoded
using the connection's character set.
After this operation completes successfully, result.has_value() == true
.
Metadata in result
will
be populated according to this->meta_mode()
.
If CompletionToken
is
a deferred completion token (e.g. use_awaitable
),
the caller is responsible for managing req
's
validity following these rules:
req
is string_view
, the string pointed
to by req
must be
kept alive by the caller until the operation is initiated.
req
is a bound_statement_tuple
, and
any of the parameters is a reference type (like string_view
),
the caller must keep the values pointed by these references alive
until the operation is initiated.
req
is a bound_statement_iterator_range
,
the caller must keep objects in the iterator range passed to statement::bind
alive until the operation is initiated.
The handler signature for this operation is void(boost::mysql::error_code)
.