INSERT, UPDATE or DELETE are treated in the same way as the SELECT command (see the HOWTO about executing a SELECT command), except that the function to execute the command is different because the returned value is not a data model but a success/failure value.
The following codes illustrates parsing and executing an UPDATE statement:
GdaSqlParser *parser;
GdaStatement *stmt;
GError *error = NULL;
parser = gda_connection_create_parser (cnc);
if (!parser) {
/* the database provider used by cnc does not implement its own parser,
* let's use a generic one */
parser = gda_sql_parser_new ();
stmt = gda_sql_parser_parse_string (parser, "UPDATE customers set name='Joe' WHERE id=123", NULL, &error);
g_object_unref (parser);
if (!stmt) {
/* there was an error while parsing */
}
else {
gint res;
res = gda_connection_statement_execute_non_select (cnc, stmt, NULL, NULL, &error);
if (res == -1) {
/* there was an error while executing the statement */
}
else if (res >= 0)
g_print ("Command Ok, %d row(s) impacted\n", res);
else
g_print ("Command Ok, number of rows impacted is not reported\n");
}
g_object_unref (stmt);
Note that the example above includes in the SQL statement the values of the data to use in the UPDATE (namely 'Joe' and '123'). Even though it's simple, a better practice is to use variables, as it prevents SQL injection and avoids formatting problems. For more intormation, see the GdaSqlParser object's documentation; or the section about convenience functions