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