Execute an INSERT, UPDATE or DELETE command

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