2012-03-30 7 views
1

Ich konnte von meiner SQLITE DB lesen, aber nicht aktualisieren. Ich frage mich, ob die Datenbank beschreibbar ist.Aktualisieren der SQLITE-Abfrage FMDB - Anfänger

Wenn ich die SQL in die SQL-Konsole kopieren, wird der Code erfolgreich ausgeführt. Also gibt es kein Problem mit SQL.

+0

, was es in der Konsole nicht gedruckt werden? OK - FAIL - Problem mit DB? –

+0

Es sagt, OK, aber wenn ich ein Select * SQL in der Konsole eingeben, wurde es nicht aktualisiert. – Illep

+0

Warum verwenden Sie * stringWithFormat * wenn Sie nicht wirklich irgendwelche Variablen hineinstellen? Versuchen Sie das Literal, wenn es nicht funktioniert, entfernen Sie die einfachen Anführungszeichen. – lawicko

Antwort

4

Übergeben Sie die Argumente immer an die SQL-Abfrage als Objekttyp, schauen Sie sich bitte an, wie Argumente an die SQL-Abfrage übergeben werden. Selbst wenn Sie eine Nummer sind vorbei, übergeben Sie es als

[NSNumber numberWithInt:someValue] 

Versuchen Sie folgendes:

-(BOOL) updateScores 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"uniques.sqlite"]; 

    FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath]; 
    BOOL success = NO; 

    if ([db open] != YES) { 
     NSLog(@"DB Error %d: %@", [db lastErrorCode], [db lastErrorMessage]); 
     return NO; //VERY IMPORTANT 
    } 

    [db beginTransaction]; 
    success = [db executeUpdate:@"UPDATE scores SET answer = ? WHERE name like ?", @"1", @"jack"]; 

    if (success) { 
     NSLog(@"OK"); 
     [db commit]; 
     [db close]; 
    }else { 
     NSLog(@"FAIL"); 
    } 

    return success; 
} 
+0

nette Arbeit ... löste mein Problem – ZeeroCool77