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
().