![]() |
![]() |
![]() |
GNOME Data Access 4 manual | ![]() |
---|---|---|---|---|
Top | Description |
The GdaSqlBuilder can be used to build a GdaStatement from its structural description, much in the same way a GdaSqlParser can be used to build a GdaStatement from an SQL string.
The GdaBuilder internally constructs a GdaSqlStatement and uses it when requested to produce
a GdaStatement (see gda_sql_builder_get_statement()
), or a GdaSqlStatement (see
gda_sql_builder_get_sql_statement()
).
During the building process, some pieces of the statement are constructed, and assembled into the final statement. Each of these pieces can be reused anytime in the same GdaBuilder object, and each is identified using a single unsigned integer ID. That ID is dynamically allocated by the object.
The following example builds the equivalent of the "name='joe' AND age >= ##ageparam::int" expression:
GdaSqlBuilder *b=... guint id_field = gda_sql_builder_add_id (b, "name"); // build the "name" SQL identifier guint id_value = gda_sql_builder_add_expr (b, NULL, G_TYPE_STRING, "joe"); // 'joe' expression guint id_cond1 = gda_sql_builder_add_cond (b, GDA_SQL_OPERATOR_TYPE_EQ, id_field, id_value, 0); // "name='joe'" guint id_cond2 = gda_sql_builder_add_cond (b, GDA_SQL_OPERATOR_TYPE_GT, gda_sql_builder_add_id (b, "age"), // build the "age" SQL identifier gda_sql_builder_add_param (b, "ageparam", G_TYPE_INT, FALSE), // parameter 0); guint id_cond_and = gda_sql_builder_add_cond (b, GDA_SQL_OPERATOR_TYPE_AND, id_cond1, id_cond2, 0); // whole expression
For more examples, see the Build statements without using a parser section.