To clarify what I meant by a low-level binding:
Put into SQLite API context, here's how a typical SELECT might work, using some sort of pseudo-C to make it easier to read
conn = sqlite3_open("...");
// create a prepared statement:
stmt = sqlite3_prepare(conn, "SELECT * from test_table");
// process all rows in the result
while (sqlite3_step(stmt) != SQLITE_DONE)
{
// access the current row
char* colValue = sqlite3_column_text(stmt, columnNdx);
// there are separate column accessors for different types, like
sqlite_column_blob, text, etc.
}
sqlite3_finalize(stmt);
sqlite3_close(conn);