Browse Source

Added and updated some new methods to take NSError** params.

ccgus 15 years ago
parent
commit
56a5e0f488
5 changed files with 26 additions and 12 deletions
  1. 3 0
      CHANGES_AND_TODO_LIST.txt
  2. 0 4
      fmdb.xcodeproj/project.pbxproj
  3. 2 1
      src/FMDatabase.h
  4. 15 7
      src/FMDatabase.m
  5. 6 0
      src/fmdb.m

+ 3 - 0
CHANGES_AND_TODO_LIST.txt

@@ -3,6 +3,9 @@ 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.11.30
+    Added and updated some new methods to take NSError** params.
+
 2010.09.19
     The signature for FMDatabase's executeQuery* methods now return FMResultSet instead if id.  Patch from Augie Fackler!
 

+ 0 - 4
fmdb.xcodeproj/project.pbxproj

@@ -181,7 +181,6 @@
 		1DEB927508733DD40010E9CD /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CC = /opt/bin/clang;
 				COPY_PHASE_STRIP = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_ENABLE_FIX_AND_CONTINUE = YES;
@@ -214,12 +213,10 @@
 		1DEB927908733DD40010E9CD /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ARCHS = i386;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				PREBINDING = NO;
-				SDKROOT = macosx10.5;
 			};
 			name = Debug;
 		};
@@ -230,7 +227,6 @@
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				PREBINDING = NO;
-				SDKROOT = macosx10.5;
 			};
 			name = Release;
 		};

+ 2 - 1
src/FMDatabase.h

@@ -44,9 +44,10 @@
 
 - (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 withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args; // you shouldn't ever need to call this.  use the previous two instead.
+- (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;

+ 15 - 7
src/FMDatabase.m

@@ -384,8 +384,8 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)ar
     return [self executeQuery:sql withArgumentsInArray:arguments orVAList:nil];
 }
 
-- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args {
-    
+- (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArray:(NSArray*)arrayArgs orVAList:(va_list)args {
+
     if (inUse) {
         [self compainAboutInUse];
         return NO;
@@ -443,6 +443,10 @@ - (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray*)arrayArgs or
                 sqlite3_finalize(pStmt);
                 [self setInUse:NO];
                 
+                if (outErr) {
+                    *outErr = [NSError errorWithDomain:[NSString stringWithUTF8String:sqlite3_errmsg(db)] code:rc userInfo:nil];
+                }
+                
                 return NO;
             }
         }
@@ -554,7 +558,7 @@ - (BOOL)executeUpdate:(NSString*)sql, ... {
     va_list args;
     va_start(args, sql);
     
-    BOOL result = [self executeUpdate:sql withArgumentsInArray:nil orVAList:args];
+    BOOL result = [self executeUpdate:sql error:nil withArgumentsInArray:nil orVAList:args];
     
     va_end(args);
     return result;
@@ -563,14 +567,18 @@ - (BOOL)executeUpdate:(NSString*)sql, ... {
 
 
 - (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments {
-    return [self executeUpdate:sql withArgumentsInArray:arguments orVAList:nil];
+    return [self executeUpdate:sql error:nil withArgumentsInArray:arguments orVAList:nil];
 }
 
-/*
-- (id) executeUpdate:(NSString *)sql arguments:(va_list)args {
+- (BOOL)update:(NSString*)sql error:(NSError**)outErr bind:(id)bindArgs, ... {
+    va_list args;
+    va_start(args, bindArgs);
+    
+    BOOL result = [self executeUpdate:sql error:outErr withArgumentsInArray:nil orVAList:args];
     
+    va_end(args);
+    return result;
 }
-*/
 
 - (BOOL)rollback {
     BOOL b = [self executeUpdate:@"ROLLBACK TRANSACTION;"];

+ 6 - 0
src/fmdb.m

@@ -30,6 +30,12 @@ int main (int argc, const char * argv[]) {
         NSLog(@"Err %d: %@", [db lastErrorCode], [db lastErrorMessage]);
     }
     
+    NSError *err = 0x00;
+    FMDBQuickCheck(![db update:@"blah blah blah" error:&err bind:nil]);
+    FMDBQuickCheck(err != nil);
+    FMDBQuickCheck([err code] == SQLITE_ERROR);
+    NSLog(@"err: '%@'", err);
+    
     // but of course, I don't bother checking the error codes below.
     // Bad programmer, no cookie.