I've been puttering around with my own hand-coded SQL interfaces for a few years now, and keep thinking of integrating them into SmaugFUSS. However, my patience level with C gets a little lower with each passing year, so I haven't made much progress.
So, a while back I sat down and started trying to write some C code to use ODBC, rather than having to choose between PostgreSQL and MySQL. For those who haven't dealt with ODBC, it's a very grumpy creature when used from C... very grumpy indeed.
The other day, it occured to me that I had two other options available. I could use SQLite, which is an embedded database that stores all its data in a single file. The plus side there is you don't need to do any setup to use it, and as long as you have the disk space, it should work on any hosting service (since it's compiled in). The minus side is that the database is not as flexible as a full database engine, and thus it's a little harder to do reports and other things you'd want to do with all your data in SQL.
Option #2 is to find (somewhere) a decent C++ API for ODBC. Since SmaugFUSS compiles using g++, it seems like it wouldn't be a huge stretch to use a C++ API, which would make life a lot simpler than the C API does. Spending a little time with Google yesterday, I found many API's that were undocumented or had only rough auto-generated doxygen excuses for documentation, and several that worked but lacked features I considered important (like being able to bind parameters).
Thus, I figured I'd ask.... does anyone have a C++ ODBC layer they particularly like? It has to be non-commercial, although GPL/BSD type licensing is probably fine (Smaug is more restrictive, but as long as the source is availalbe, GPL/LGPL should still work).
If not, does anyone else out there use SQLite? It seems like a nice elegant solution, and I suspect you could export your data for uploading into a larger RDBMS to do analysis on it, if you felt the need.