SQLite Forum

sqlite3_prepare()
Login
> 1. What are the differences among the 4 recommended functions? 

As the page you quoted says:

> The second argument, "zSql", is the statement to be compiled, encoded as either UTF-8 or UTF-16. The sqlite3_prepare(), sqlite3_prepare_v2(), and sqlite3_prepare_v3() interfaces use UTF-8, and sqlite3_prepare16(), sqlite3_prepare16_v2(), and sqlite3_prepare16_v3() use UTF-16.
>
> [...]
>
> sqlite3_prepare_v3() differs from sqlite3_prepare_v2() only in having the extra prepFlags parameter, which is a bit array consisting of zero or more of the SQLITE_PREPARE_* flags. The sqlite3_prepare_v2() interface works exactly the same as sqlite3_prepare_v3() with a zero prepFlags parameter.

So, in a nutshell, UTF-8 vs UTF-16, and prepare flags or lack thereof.  

> 2. Should I just use sqlite3_prepare_v2() ... is it future proof?

It's about as future proof as anything in SQLite, I guess.