(1) Form of wildcards:
?
?N
:N:
$N
At various places in the documentation, all of these seem to be mentioned, though not all consistently. At times N is only a numeric integer, while at others it is a fully alphanumeric identifier. The last ($) form, is hinted at only in the header file, near as I can tell.
James,
I can't tell you how all those variations behave, but I think that by far the clearest/simplest functional form is plain :N. I'm sure there are reasons for the other forms to exist (legacy style? oracle/mysql compatability?), but from a programmatic standpoint:
INSERT INTO mytable (a, b, c, d, e) VALUES (:1, :2, 0, :3, :2) sqlite3_bind_int(stmt, 1, 42); sqlite3_bind_int(stmt, 2, 99); sqlite3_bind_int(stmt, 3, 144);
is both easy to write and easy to understand when you come back and look at it in the future.
-Eli