Daniel Franke wrote:
> Layering. Wrap sqlite3_* into your own set of functions. Create another 
> library, say libyourapp. Most functions will just forward the arguments to 
> sqlite, but others, e.g. yourapp_open_db() will not only open the database, 
> but also attach a couple of functions, which are also part of libyourapp.
>
> This additional layer won't cost too much CPU cycles and is also meaningfull 
> if you ever decide to switch database backends: just reimplemnt those 
> functions and you are back in business :)
>
>   

This is what I've done.  For consistency I've also used simple macros to
#define sqlite3_ functions to db_ counterparts, so there are no sqlite3_
APIs called directly from the code.  The db_open also registers a couple
of small C functions at the same time.  Also lets us do a few neat
things, like use the same base offset for binding and retrieving data as
well as centralizing SQLITE_BUSY returns and error reporting.

Would second Daniel's recommendation, all except for the part about
switching database backends.. ;-)

  -P

Reply via email to