x::sql::dbi::constraint
provides the means for constructing a WHERE
clause the same way that constraints are
added by
search() to a resultset.
Use this to construct the SQL
logical building blocks. The resulting SQL is always
well-formed.
The end result of a
x::sql::dbi::constraint is literal
SQL text, and passing the
x::sql::dbi::constraint to
execute()
provides values for any placeholders in the literal SQL.
Resulsets' search() uses this
class directly, and
the x::sql::dbi::constraint
exposes the underlying code.
#include <x/sql/dbi/constraint.H> int key; x::sql::connection conn; // ... x::sql::dbi::constraint where=x::sql::dbi::constraint::create("a", "=", key); std::ostringstream o; o << "SELECT * FROM memos WHERE " << where; auto stmt=conn->prepare(o.str()); stmt->execute(constraint);
The literal SQL constructed in this example is
“SELECT * FROM memos WHERE a = ?”
(the actual SQL literal might have a few
extra set of parenthesis that are not shown here, for clarity).
After forming and prepare()-ing the complete
SQL query, passing the
x::sql::dbi::constraint to
execute() supplies the values for the
“?” placeholder parameters in the
constructed constraint.
x::sql::dbi::constraint()'s
create() takes all parameters that can be used
with search(), including
AND(),
OR(),
and
NOT().