Browse Source

Formatting updates, along with a new method for getting a dictionary back from a result set.

ccgus 15 years ago
parent
commit
83e3eeed94
6 changed files with 192 additions and 135 deletions
  1. 4 0
      CHANGES_AND_TODO_LIST.txt
  2. 1 0
      CONTRIBUTORS.txt
  3. 26 27
      src/FMDatabase.h
  4. 34 34
      src/FMDatabase.m
  5. 30 29
      src/FMResultSet.h
  6. 97 45
      src/FMResultSet.m

+ 4 - 0
CHANGES_AND_TODO_LIST.txt

@@ -3,6 +3,10 @@ Zip, nada, zilch.  Got any ideas?
 
 If you would like to contribute some code- awesome!  I just ask that you make it conform to the coding conventions already set in here, and to add a couple of tests for your new code to fmdb.m.  And of course, the code should be of general use to more than just a couple of folks.  Send your patches to gus@flyingmeat.com.
 
+2010.08.24:
+    Added resultDict to FMResultSet, which returns a dictionary of column values.  Thanks to Pascal Pfiffner for the patch!
+    Cleaned up some formatting.
+
 2010.06.21:
     
     Changed up FMDatabase's close method to return a boolean, and fixed a compiler warning when compiling in 64bit land.  Thanks to Jens Alfke for the patches!

+ 1 - 0
CONTRIBUTORS.txt

@@ -21,5 +21,6 @@ Dan Wright
 OZLB
 Matt Stevens
 Jens Alfke
+Pascal Pfiffner
 
 Aaaaannnd, Gus Mueller (that's me!)

+ 26 - 27
src/FMDatabase.h

@@ -21,41 +21,41 @@
 + (id)databaseWithPath:(NSString*)inPath;
 - (id)initWithPath:(NSString*)inPath;
 
-- (BOOL) open;
+- (BOOL)open;
 #if SQLITE_VERSION_NUMBER >= 3005000
-- (BOOL) openWithFlags:(int)flags;
+- (BOOL)openWithFlags:(int)flags;
 #endif
-- (BOOL) close;
-- (BOOL) goodConnection;
-- (void) clearCachedStatements;
+- (BOOL)close;
+- (BOOL)goodConnection;
+- (void)clearCachedStatements;
 
 // encryption methods.  You need to have purchased the sqlite encryption extensions for these to work.
-- (BOOL) setKey:(NSString*)key;
-- (BOOL) rekey:(NSString*)key;
+- (BOOL)setKey:(NSString*)key;
+- (BOOL)rekey:(NSString*)key;
 
 
-- (NSString *) databasePath;
+- (NSString *)databasePath;
 
-- (NSString*) lastErrorMessage;
+- (NSString*)lastErrorMessage;
 
-- (int) lastErrorCode;
-- (BOOL) hadError;
-- (sqlite_int64) lastInsertRowId;
+- (int)lastErrorCode;
+- (BOOL)hadError;
+- (sqlite_int64)lastInsertRowId;
 
-- (sqlite3*) sqliteHandle;
+- (sqlite3*)sqliteHandle;
 
-- (BOOL) executeUpdate:(NSString*)sql, ...;
-- (BOOL) executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments;
-- (id) executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args; // you shouldn't ever need to call this.  use the previous two instead.
+- (BOOL)executeUpdate:(NSString*)sql, ...;
+- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments;
+- (id)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args; // you shouldn't ever need to call this.  use the previous two instead.
 
-- (id) executeQuery:(NSString*)sql, ...;
-- (id) executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments;
-- (BOOL) executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args; // you shouldn't ever need to call this.  use the previous two instead.
+- (id)executeQuery:(NSString*)sql, ...;
+- (id)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments;
+- (BOOL)executeUpdate:(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)rollback;
+- (BOOL)commit;
+- (BOOL)beginTransaction;
+- (BOOL)beginDeferredTransaction;
 
 - (BOOL)logsErrors;
 - (void)setLogsErrors:(BOOL)flag;
@@ -85,8 +85,7 @@
 - (void)setCachedStatements:(NSMutableDictionary *)value;
 
 
-+ (NSString*) sqliteLibVersion;
-
++ (NSString*)sqliteLibVersion;
 
 - (int)changes;
 
@@ -99,8 +98,8 @@
 }
 
 
-- (void) close;
-- (void) reset;
+- (void)close;
+- (void)reset;
 
 - (sqlite3_stmt *)statement;
 - (void)setStatement:(sqlite3_stmt *)value;

+ 34 - 34
src/FMDatabase.m

@@ -30,19 +30,19 @@ - (void)dealloc {
     [super dealloc];
 }
 
-+ (NSString*) sqliteLibVersion {
++ (NSString*)sqliteLibVersion {
     return [NSString stringWithFormat:@"%s", sqlite3_libversion()];
 }
 
-- (NSString *) databasePath {
+- (NSString *)databasePath {
     return databasePath;
 }
 
-- (sqlite3*) sqliteHandle {
+- (sqlite3*)sqliteHandle {
     return db;
 }
 
-- (BOOL) open {
+- (BOOL)open {
 	int err = sqlite3_open([databasePath fileSystemRepresentation], &db );
 	if(err != SQLITE_OK) {
         NSLog(@"error opening!: %d", err);
@@ -53,7 +53,7 @@ - (BOOL) open {
 }
 
 #if SQLITE_VERSION_NUMBER >= 3005000
-- (BOOL) openWithFlags:(int)flags {
+- (BOOL)openWithFlags:(int)flags {
     int err = sqlite3_open_v2([databasePath fileSystemRepresentation], &db, flags, NULL /* Name of VFS module to use */);
 	if(err != SQLITE_OK) {
 		NSLog(@"error opening!: %d", err);
@@ -64,7 +64,7 @@ - (BOOL) openWithFlags:(int)flags {
 #endif
 
 
-- (BOOL) close {
+- (BOOL)close {
     
     [self clearCachedStatements];
     
@@ -97,7 +97,7 @@ - (BOOL) close {
     return YES;
 }
 
-- (void) clearCachedStatements {
+- (void)clearCachedStatements {
     
     NSEnumerator *e = [cachedStatements objectEnumerator];
     FMStatement *cachedStmt;
@@ -109,11 +109,11 @@ - (void) clearCachedStatements {
     [cachedStatements removeAllObjects];
 }
 
-- (FMStatement*) cachedStatementForQuery:(NSString*)query {
+- (FMStatement*)cachedStatementForQuery:(NSString*)query {
     return [cachedStatements objectForKey:query];
 }
 
-- (void) setCachedStatement:(FMStatement*)statement forQuery:(NSString*)query {
+- (void)setCachedStatement:(FMStatement*)statement forQuery:(NSString*)query {
     //NSLog(@"setting query: %@", query);
     query = [query copy]; // in case we got handed in a mutable string...
     [statement setQuery:query];
@@ -122,7 +122,7 @@ - (void) setCachedStatement:(FMStatement*)statement forQuery:(NSString*)query {
 }
 
 
-- (BOOL) rekey:(NSString*)key {
+- (BOOL)rekey:(NSString*)key {
 #ifdef SQLITE_HAS_CODEC
     if (!key) {
         return NO;
@@ -141,7 +141,7 @@ - (BOOL) rekey:(NSString*)key {
 #endif
 }
 
-- (BOOL) setKey:(NSString*)key {
+- (BOOL)setKey:(NSString*)key {
 #ifdef SQLITE_HAS_CODEC
     if (!key) {
         return NO;
@@ -155,7 +155,7 @@ - (BOOL) setKey:(NSString*)key {
 #endif
 }
 
-- (BOOL) goodConnection {
+- (BOOL)goodConnection {
     
     if (!db) {
         return NO;
@@ -171,7 +171,7 @@ - (BOOL) goodConnection {
     return NO;
 }
 
-- (void) compainAboutInUse {
+- (void)compainAboutInUse {
     NSLog(@"The FMDatabase %@ is currently in use.", self);
     
     if (crashOnErrors) {
@@ -179,21 +179,21 @@ - (void) compainAboutInUse {
     }
 }
 
-- (NSString*) lastErrorMessage {
+- (NSString*)lastErrorMessage {
     return [NSString stringWithUTF8String:sqlite3_errmsg(db)];
 }
 
-- (BOOL) hadError {
+- (BOOL)hadError {
     int lastErrCode = [self lastErrorCode];
     
     return (lastErrCode > SQLITE_OK && lastErrCode < SQLITE_ROW);
 }
 
-- (int) lastErrorCode {
+- (int)lastErrorCode {
     return sqlite3_errcode(db);
 }
 
-- (sqlite_int64) lastInsertRowId {
+- (sqlite_int64)lastInsertRowId {
     
     if (inUse) {
         [self compainAboutInUse];
@@ -208,7 +208,7 @@ - (sqlite_int64) lastInsertRowId {
     return ret;
 }
 
-- (void) bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt; {
+- (void)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt; {
     
     if ((!obj) || ((NSNull *)obj == [NSNull null])) {
         sqlite3_bind_null(pStmt, idx);
@@ -250,7 +250,7 @@ - (void) bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt;
     }
 }
 
-- (id) executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args {
+- (id)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args {
     
     if (inUse) {
         [self compainAboutInUse];
@@ -370,7 +370,7 @@ - (id) executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orV
     return rs;
 }
 
-- (id) executeQuery:(NSString*)sql, ... {
+- (id)executeQuery:(NSString*)sql, ... {
     va_list args;
     va_start(args, sql);
     
@@ -380,11 +380,11 @@ - (id) executeQuery:(NSString*)sql, ... {
     return result;
 }
 
-- (id) executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments {
+- (id)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments {
     return [self executeQuery:sql withArgumentsInArray:arguments orVAList:nil];
 }
 
-- (BOOL) executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args {
+- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args {
     
     if (inUse) {
         [self compainAboutInUse];
@@ -550,7 +550,7 @@ - (BOOL) executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray*)arrayArgs o
 }
 
 
-- (BOOL) executeUpdate:(NSString*)sql, ... {
+- (BOOL)executeUpdate:(NSString*)sql, ... {
     va_list args;
     va_start(args, sql);
     
@@ -562,7 +562,7 @@ - (BOOL) executeUpdate:(NSString*)sql, ... {
 
 
 
-- (BOOL) executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments {
+- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments {
     return [self executeUpdate:sql withArgumentsInArray:arguments orVAList:nil];
 }
 
@@ -572,7 +572,7 @@ - (id) executeUpdate:(NSString *)sql arguments:(va_list)args {
 }
 */
 
-- (BOOL) rollback {
+- (BOOL)rollback {
     BOOL b = [self executeUpdate:@"ROLLBACK TRANSACTION;"];
     if (b) {
         inTransaction = NO;
@@ -580,7 +580,7 @@ - (BOOL) rollback {
     return b;
 }
 
-- (BOOL) commit {
+- (BOOL)commit {
     BOOL b =  [self executeUpdate:@"COMMIT TRANSACTION;"];
     if (b) {
         inTransaction = NO;
@@ -588,7 +588,7 @@ - (BOOL) commit {
     return b;
 }
 
-- (BOOL) beginDeferredTransaction {
+- (BOOL)beginDeferredTransaction {
     BOOL b =  [self executeUpdate:@"BEGIN DEFERRED TRANSACTION;"];
     if (b) {
         inTransaction = YES;
@@ -596,7 +596,7 @@ - (BOOL) beginDeferredTransaction {
     return b;
 }
 
-- (BOOL) beginTransaction {
+- (BOOL)beginTransaction {
     BOOL b =  [self executeUpdate:@"BEGIN EXCLUSIVE TRANSACTION;"];
     if (b) {
         inTransaction = YES;
@@ -622,7 +622,7 @@ - (BOOL)inUse {
     return inUse || inTransaction;
 }
 
-- (void) setInUse:(BOOL)b {
+- (void)setInUse:(BOOL)b {
     inUse = b;
 }
 
@@ -702,20 +702,20 @@ - (void)dealloc {
 }
 
 
-- (void) close {
+- (void)close {
     if (statement) {
         sqlite3_finalize(statement);
         statement = 0x00;
     }
 }
 
-- (void) reset {
+- (void)reset {
     if (statement) {
         sqlite3_reset(statement);
     }
 }
 
-- (sqlite3_stmt *) statement {
+- (sqlite3_stmt *)statement {
     return statement;
 }
 
@@ -723,7 +723,7 @@ - (void)setStatement:(sqlite3_stmt *)value {
     statement = value;
 }
 
-- (NSString *) query {
+- (NSString *)query {
     return query;
 }
 
@@ -744,7 +744,7 @@ - (void)setUseCount:(long)value {
     }
 }
 
-- (NSString*) description {
+- (NSString*)description {
     return [NSString stringWithFormat:@"%@ %d hit(s) for query %@", [super description], useCount, query];
 }
 

+ 30 - 29
src/FMResultSet.h

@@ -26,9 +26,9 @@
 }
 
 
-+ (id) resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB;
++ (id)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB;
 
-- (void) close;
+- (void)close;
 
 - (NSString *)query;
 - (void)setQuery:(NSString *)value;
@@ -38,51 +38,52 @@
 
 - (void)setParentDB:(FMDatabase *)newDb;
 
-- (BOOL) next;
-- (BOOL) hasAnotherRow;
+- (BOOL)next;
+- (BOOL)hasAnotherRow;
 
-- (int) columnIndexForName:(NSString*)columnName;
-- (NSString*) columnNameForIndex:(int)columnIdx;
+- (int)columnIndexForName:(NSString*)columnName;
+- (NSString*)columnNameForIndex:(int)columnIdx;
 
-- (int) intForColumn:(NSString*)columnName;
-- (int) intForColumnIndex:(int)columnIdx;
+- (int)intForColumn:(NSString*)columnName;
+- (int)intForColumnIndex:(int)columnIdx;
 
-- (long) longForColumn:(NSString*)columnName;
-- (long) longForColumnIndex:(int)columnIdx;
+- (long)longForColumn:(NSString*)columnName;
+- (long)longForColumnIndex:(int)columnIdx;
 
-- (long long int) longLongIntForColumn:(NSString*)columnName;
-- (long long int) longLongIntForColumnIndex:(int)columnIdx;
+- (long long int)longLongIntForColumn:(NSString*)columnName;
+- (long long int)longLongIntForColumnIndex:(int)columnIdx;
 
-- (BOOL) boolForColumn:(NSString*)columnName;
-- (BOOL) boolForColumnIndex:(int)columnIdx;
+- (BOOL)boolForColumn:(NSString*)columnName;
+- (BOOL)boolForColumnIndex:(int)columnIdx;
 
-- (double) doubleForColumn:(NSString*)columnName;
-- (double) doubleForColumnIndex:(int)columnIdx;
+- (double)doubleForColumn:(NSString*)columnName;
+- (double)doubleForColumnIndex:(int)columnIdx;
 
-- (NSString*) stringForColumn:(NSString*)columnName;
-- (NSString*) stringForColumnIndex:(int)columnIdx;
+- (NSString*)stringForColumn:(NSString*)columnName;
+- (NSString*)stringForColumnIndex:(int)columnIdx;
 
-- (NSDate*) dateForColumn:(NSString*)columnName;
-- (NSDate*) dateForColumnIndex:(int)columnIdx;
+- (NSDate*)dateForColumn:(NSString*)columnName;
+- (NSDate*)dateForColumnIndex:(int)columnIdx;
 
-- (NSData*) dataForColumn:(NSString*)columnName;
-- (NSData*) dataForColumnIndex:(int)columnIdx;
+- (NSData*)dataForColumn:(NSString*)columnName;
+- (NSData*)dataForColumnIndex:(int)columnIdx;
 
-- (const unsigned char *) UTF8StringForColumnIndex:(int)columnIdx;
-- (const unsigned char *) UTF8StringForColumnName:(NSString*)columnName;
+- (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx;
+- (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName;
 
 /*
 If you are going to use this data after you iterate over the next row, or after you close the
 result set, make sure to make a copy of the data first (or just use dataForColumn:/dataForColumnIndex:)
 If you don't, you're going to be in a world of hurt when you try and use the data.
 */
-- (NSData*) dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED;
-- (NSData*) dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED;
+- (NSData*)dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED;
+- (NSData*)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED;
 
 
-- (BOOL) columnIndexIsNull:(int)columnIdx;
-- (BOOL) columnIsNull:(NSString*)columnName;
+- (BOOL)columnIndexIsNull:(int)columnIdx;
+- (BOOL)columnIsNull:(NSString*)columnName;
 
-- (void) kvcMagic:(id)object;
+- (void)kvcMagic:(id)object;
+- (NSDictionary *)resultDict;
 
 @end

+ 97 - 45
src/FMResultSet.m

@@ -9,7 +9,7 @@ - (void)setColumnNameToIndexMap:(NSMutableDictionary *)value;
 
 @implementation FMResultSet
 
-+ (id) resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB {
++ (id)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB {
     
     FMResultSet *rs = [[FMResultSet alloc] init];
     
@@ -28,10 +28,10 @@ - (void)dealloc {
     [columnNameToIndexMap release];
     columnNameToIndexMap = nil;
     
-	[super dealloc];
+    [super dealloc];
 }
 
-- (void) close {
+- (void)close {
     
     [statement reset];
     [statement release];
@@ -42,11 +42,11 @@ - (void) close {
     parentDB = nil;
 }
 
-- (void) setupColumnNames {
+- (void)setupColumnNames {
     
     if (!columnNameToIndexMap) {
         [self setColumnNameToIndexMap:[NSMutableDictionary dictionary]];
-    }	
+    }    
     
     int columnCount = sqlite3_column_count(statement.statement);
     
@@ -58,7 +58,7 @@ - (void) setupColumnNames {
     columnNamesSetup = YES;
 }
 
-- (void) kvcMagic:(id)object {
+- (void)kvcMagic:(id)object {
     
     int columnCount = sqlite3_column_count(statement.statement);
     
@@ -76,7 +76,59 @@ - (void) kvcMagic:(id)object {
     }
 }
 
-- (BOOL) next {
+- (NSDictionary *)resultDict {
+    
+    NSInteger num_cols = sqlite3_data_count(statement.statement);
+    
+    if (num_cols > 0) {
+        NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:num_cols];
+        
+        NSInteger i;
+        for (i = 0; i < num_cols; i++) {
+            
+            const char *col_name = sqlite3_column_name(statement.statement, i);
+            
+            if (col_name) {
+                NSString *colName = [NSString stringWithUTF8String:col_name];
+                id value = nil;
+                
+                // fetch according to type
+                switch (sqlite3_column_type(statement.statement, i)) {
+                    case SQLITE_INTEGER: {
+                        value = [NSNumber numberWithInt:[self intForColumnIndex:i]];
+                        break;
+                    }
+                    case SQLITE_FLOAT: {
+                        value = [NSNumber numberWithDouble:[self doubleForColumnIndex:i]];
+                        break;
+                    }
+                    case SQLITE_TEXT: {
+                        value = [self stringForColumnIndex:i];
+                        break;
+                    }
+                    case SQLITE_BLOB: {
+                        value = [self dataForColumnIndex:i];
+                        break;
+                    }
+                }
+                
+                // save to dict
+                if (value) {
+                    [dict setObject:value forKey:colName];
+                }
+            }
+        }
+        
+        return [[dict copy] autorelease];
+    }
+    else {
+        NSLog(@"Warning: There seem to be no columns in this set.");
+    }
+    
+    return nil;
+}
+
+- (BOOL)next {
     
     int rc;
     BOOL retry;
@@ -127,11 +179,11 @@ - (BOOL) next {
     return (rc == SQLITE_ROW);
 }
 
-- (BOOL) hasAnotherRow {
+- (BOOL)hasAnotherRow {
     return sqlite3_errcode([parentDB sqliteHandle]) == SQLITE_ROW;
 }
 
-- (int) columnIndexForName:(NSString*)columnName {
+- (int)columnIndexForName:(NSString*)columnName {
     
     if (!columnNamesSetup) {
         [self setupColumnNames];
@@ -152,51 +204,51 @@ - (int) columnIndexForName:(NSString*)columnName {
 
 
 
-- (int) intForColumn:(NSString*)columnName {
+- (int)intForColumn:(NSString*)columnName {
     return [self intForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (int) intForColumnIndex:(int)columnIdx {
+- (int)intForColumnIndex:(int)columnIdx {
     return sqlite3_column_int(statement.statement, columnIdx);
 }
 
-- (long) longForColumn:(NSString*)columnName {
+- (long)longForColumn:(NSString*)columnName {
     return [self longForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (long) longForColumnIndex:(int)columnIdx {
+- (long)longForColumnIndex:(int)columnIdx {
     return (long)sqlite3_column_int64(statement.statement, columnIdx);
 }
 
-- (long long int) longLongIntForColumn:(NSString*)columnName {
+- (long long int)longLongIntForColumn:(NSString*)columnName {
     return [self longLongIntForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (long long int) longLongIntForColumnIndex:(int)columnIdx {
+- (long long int)longLongIntForColumnIndex:(int)columnIdx {
     return sqlite3_column_int64(statement.statement, columnIdx);
 }
 
-- (BOOL) boolForColumn:(NSString*)columnName {
+- (BOOL)boolForColumn:(NSString*)columnName {
     return [self boolForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (BOOL) boolForColumnIndex:(int)columnIdx {
+- (BOOL)boolForColumnIndex:(int)columnIdx {
     return ([self intForColumnIndex:columnIdx] != 0);
 }
 
-- (double) doubleForColumn:(NSString*)columnName {
+- (double)doubleForColumn:(NSString*)columnName {
     return [self doubleForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (double) doubleForColumnIndex:(int)columnIdx {
+- (double)doubleForColumnIndex:(int)columnIdx {
     return sqlite3_column_double(statement.statement, columnIdx);
 }
 
-- (NSString*) stringForColumnIndex:(int)columnIdx {
+- (NSString*)stringForColumnIndex:(int)columnIdx {
     
     if (sqlite3_column_type(statement.statement, columnIdx) == SQLITE_NULL || (columnIdx < 0)) {
-		return nil;
-	}
+        return nil;
+    }
     
     const char *c = (const char *)sqlite3_column_text(statement.statement, columnIdx);
     
@@ -208,33 +260,33 @@ - (NSString*) stringForColumnIndex:(int)columnIdx {
     return [NSString stringWithUTF8String:c];
 }
 
-- (NSString*) stringForColumn:(NSString*)columnName {
+- (NSString*)stringForColumn:(NSString*)columnName {
     return [self stringForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (NSDate*) dateForColumn:(NSString*)columnName {
+- (NSDate*)dateForColumn:(NSString*)columnName {
     return [self dateForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (NSDate*) dateForColumnIndex:(int)columnIdx {
+- (NSDate*)dateForColumnIndex:(int)columnIdx {
     
     if (sqlite3_column_type(statement.statement, columnIdx) == SQLITE_NULL || (columnIdx < 0)) {
-		return nil;
-	}
+        return nil;
+    }
     
     return [NSDate dateWithTimeIntervalSince1970:[self doubleForColumnIndex:columnIdx]];
 }
 
 
-- (NSData*) dataForColumn:(NSString*)columnName {
+- (NSData*)dataForColumn:(NSString*)columnName {
     return [self dataForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (NSData*) dataForColumnIndex:(int)columnIdx {
+- (NSData*)dataForColumnIndex:(int)columnIdx {
     
     if (sqlite3_column_type(statement.statement, columnIdx) == SQLITE_NULL || (columnIdx < 0)) {
-		return nil;
-	}
+        return nil;
+    }
     
     int dataSize = sqlite3_column_bytes(statement.statement, columnIdx);
     
@@ -246,15 +298,15 @@ - (NSData*) dataForColumnIndex:(int)columnIdx {
 }
 
 
-- (NSData*) dataNoCopyForColumn:(NSString*)columnName {
+- (NSData*)dataNoCopyForColumn:(NSString*)columnName {
     return [self dataNoCopyForColumnIndex:[self columnIndexForName:columnName]];
 }
 
-- (NSData*) dataNoCopyForColumnIndex:(int)columnIdx {
+- (NSData*)dataNoCopyForColumnIndex:(int)columnIdx {
     
     if (sqlite3_column_type(statement.statement, columnIdx) == SQLITE_NULL || (columnIdx < 0)) {
-		return nil;
-	}
+        return nil;
+    }
     
     int dataSize = sqlite3_column_bytes(statement.statement, columnIdx);
     
@@ -264,31 +316,31 @@ - (NSData*) dataNoCopyForColumnIndex:(int)columnIdx {
 }
 
 
-- (BOOL) columnIndexIsNull:(int)columnIdx {
+- (BOOL)columnIndexIsNull:(int)columnIdx {
     return sqlite3_column_type(statement.statement, columnIdx) == SQLITE_NULL;
 }
 
-- (BOOL) columnIsNull:(NSString*)columnName {
+- (BOOL)columnIsNull:(NSString*)columnName {
     return [self columnIndexIsNull:[self columnIndexForName:columnName]];
 }
 
-- (const unsigned char *) UTF8StringForColumnIndex:(int)columnIdx {
+- (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx {
     
     if (sqlite3_column_type(statement.statement, columnIdx) == SQLITE_NULL || (columnIdx < 0)) {
-		return nil;
-	}
+        return nil;
+    }
     
     return sqlite3_column_text(statement.statement, columnIdx);
 }
 
-- (const unsigned char *) UTF8StringForColumnName:(NSString*)columnName {
-	return [self UTF8StringForColumnIndex:[self columnIndexForName:columnName]];
+- (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName {
+    return [self UTF8StringForColumnIndex:[self columnIndexForName:columnName]];
 }
 
 
 // returns autoreleased NSString containing the name of the column in the result set
-- (NSString*) columnNameForIndex:(int)columnIdx {
-	return [NSString stringWithUTF8String: sqlite3_column_name(statement.statement, columnIdx)];
+- (NSString*)columnNameForIndex:(int)columnIdx {
+    return [NSString stringWithUTF8String: sqlite3_column_name(statement.statement, columnIdx)];
 }
 
 - (void)setParentDB:(FMDatabase *)newDb {
@@ -316,7 +368,7 @@ - (void)setColumnNameToIndexMap:(NSMutableDictionary *)value {
     columnNameToIndexMap = value;
 }
 
-- (FMStatement *) statement {
+- (FMStatement *)statement {
     return statement;
 }