/* USQLiteDatabase.cpp */ #include "USQLiteDatabase.h" #include "FullPath.h" #include int USQLiteDatabase::Callback(void *pArg, int argc, char **argv, char **columnNames) { USQLiteDatabase *p = (USQLiteDatabase *)pArg; return p->process( argc, argv, columnNames ); } USQLiteDatabase::USQLiteDatabase(char *path) { char *msg = NULL; db = sqlite_open(path, 1, &msg); } USQLiteDatabase::USQLiteDatabase(FSSpec fss) { char *msg = NULL; Handle p; short len; GetFullPath( fss.vRefNum, fss.parID, fss.name, &len, &p ); HLock(p); db = sqlite_open(*p, 1, &msg); DisposeHandle(p); } USQLiteDatabase::~USQLiteDatabase() { if( db ) sqlite_close(db); db = NULL; } int USQLiteDatabase::exec( char *sql ) { int retval = 0; if (db) { char *errMsg = NULL; retval = sqlite_exec( db, sql, Callback, (void *)this, &errMsg ); if( errMsg ) { last = errMsg; free(errMsg); } } return retval; } int USQLiteDatabase::exec_printf( char *sql, ... ) { va_list args; va_start( args, sql ); char *errMsg = NULL; int ret = sqlite_exec_vprintf( db, sql, Callback, (void *) this, &errMsg, args); if( errMsg ) { last = errMsg; free(errMsg); } va_end(args); return ret; }