- rc = db.exec (sql, callback, null);
- if (rc != Sqlite.OK) {
- stderr.printf ("Failed to insert movie \"%s\" (%d): %d, %s\n", title, year, rc, db.errmsg ());
+ if (add_statement == null) {
+ string sql = "INSERT INTO Movies(Title, Year) VALUES (?, ?);";
+ assert (db.prepare_v2 (sql, -1, out add_statement) == Sqlite.OK);
+ }
+
+ assert (add_statement.bind_text (1, title) == Sqlite.OK);
+ assert (add_statement.bind_int (2, year) == Sqlite.OK);
+
+ rc = add_statement.step ();
+ if (rc != Sqlite.DONE) {
+ if (rc == Sqlite.CONSTRAINT)
+ stderr.printf ("Skipped duplicate \"%s\" (%d)\n", title, year);
+ else
+ stderr.printf ("Failed to insert movie \"%s\" (%d): %d, %s\n", title, year, rc, db.errmsg ());
+ add_statement.reset ();