#import #import "sqlite3.h" #import "FMResultSet.h" @interface FMDatabase : NSObject { sqlite3* db; NSString* databasePath; BOOL logsErrors; BOOL crashOnErrors; BOOL inUse; BOOL inTransaction; BOOL traceExecution; BOOL checkedOut; int busyRetryTimeout; BOOL shouldCacheStatements; NSMutableDictionary *cachedStatements; NSMutableSet *openResultSets; } + (id)databaseWithPath:(NSString*)inPath; - (id)initWithPath:(NSString*)inPath; - (BOOL)open; #if SQLITE_VERSION_NUMBER >= 3005000 - (BOOL)openWithFlags:(int)flags; #endif - (BOOL)close; - (BOOL)goodConnection; - (void)clearCachedStatements; - (void)closeOpenResultSets; // encryption methods. You need to have purchased the sqlite encryption extensions for these to work. - (BOOL)setKey:(NSString*)key; - (BOOL)rekey:(NSString*)key; - (NSString *)databasePath; - (NSString*)lastErrorMessage; - (int)lastErrorCode; - (BOOL)hadError; - (sqlite_int64)lastInsertRowId; - (sqlite3*)sqliteHandle; - (BOOL)update:(NSString*)sql error:(NSError**)outErr bind:(id)bindArgs, ...; - (BOOL)executeUpdate:(NSString*)sql, ...; - (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments; - (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args; // you shouldn't ever need to call this. use the previous two instead. - (FMResultSet *)executeQuery:(NSString*)sql, ...; - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments; - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args; // you shouldn't ever need to call this. use the previous two instead. - (BOOL)rollback; - (BOOL)commit; - (BOOL)beginTransaction; - (BOOL)beginDeferredTransaction; - (BOOL)logsErrors; - (void)setLogsErrors:(BOOL)flag; - (BOOL)crashOnErrors; - (void)setCrashOnErrors:(BOOL)flag; - (BOOL)inUse; - (void)setInUse:(BOOL)value; - (BOOL)inTransaction; - (void)setInTransaction:(BOOL)flag; - (BOOL)traceExecution; - (void)setTraceExecution:(BOOL)flag; - (BOOL)checkedOut; - (void)setCheckedOut:(BOOL)flag; - (int)busyRetryTimeout; - (void)setBusyRetryTimeout:(int)newBusyRetryTimeout; - (BOOL)shouldCacheStatements; - (void)setShouldCacheStatements:(BOOL)value; - (NSMutableDictionary *)cachedStatements; - (void)setCachedStatements:(NSMutableDictionary *)value; + (NSString*)sqliteLibVersion; - (int)changes; @end @interface FMStatement : NSObject { sqlite3_stmt *statement; NSString *query; long useCount; } - (void)close; - (void)reset; - (sqlite3_stmt *)statement; - (void)setStatement:(sqlite3_stmt *)value; - (NSString *)query; - (void)setQuery:(NSString *)value; - (long)useCount; - (void)setUseCount:(long)value; @end