2012-03-30 6 views
0

Ich habe Probleme UPDATING meine Datenbank mit FMDB. Hier ist mein SQLSchreiben SQL-Anweisung UPDATE Abfrage FMDB

BOOL success = [db executeUpdate:[NSString stringWithFormat:@"UPDATE Person SET gender= '%@' WHERE name= '%@'",gender,name]]; 

Ich frage mich, wenn ich einen Fehler unter Verwendung des = Zeichen, das vergleichen (Wenn ja, wie kann ich es beheben könnte). Oder irgendeine andere Lösung. Hilfe?

EDIT:

DB Error 7: out of memory 
2012-03-30 16:10:03.341 den[5168:f803] Error calling sqlite3_step (1: SQL logic error or missing database) SQLITE_ERROR 
2012-03-30 16:10:03.343 den[5168:f803] DB Query: COMMIT TRANSACTION; 
+0

sehen diese Ihnen helfen können: http://stackoverflow.com/a/392536/1126111 – Hector

Antwort

7

Sie wahrscheinlich dieses Format verwenden sollten:

BOOL success = [db executeUpdate:@"UPDATE Person SET gender = ? WHERE name = ?",gender,name]; 

Sie verwenden auch ein Commit, ohne eine Transaktion zu starten, also nehmen Sie dieses Bit auch heraus.

+0

Auch wenn ich einen String zu '?' Hinzufüge, zum Beispiel gender = 'männlich', wird er nicht in der Datenbank aktualisiert. Warum ist das ? Siehe diesen Beitrag http://stackoverflow.com/questions/9941967/updating-sqlite-query-fmdb-beginner#comment12704052_9941967 – Illep

0

Try this:

BOOL success = [db executeUpdate:[NSString stringWithFormat:@"UPDATE Person SET gender= '%@' WHERE name LIKES '%@'",gender,name]]; 
+0

Nein, das hat nicht funktioniert. – Illep

4

Ich habe diese:

FMDatabase * database = [self openDB:[DELEGATE getDatabasePath]]; 
NSString *query = @""; 
query = [NSString stringWithFormat:@"UPDATE Person SET gender= '%@' WHERE name LIKES '%@'",gender,name]; 
[database executeUpdate:query]; 
[database commit]; 
[database close]; 
+0

Ich bekomme auch einen Fehler/Warnung namens 'Nicht genügend Speicher'. Möglicherweise gibt es kein Problem mit dem SQL und einigen anderen Problemen. Weißt du, was dieser Fehler bedeutet? HILFE – Illep

+0

Stellen Sie sicher, dass Sie die Spaltennamen richtig eingegeben haben. – Deviator

+0

Geprüft, es ist korrekt – Illep

1

try this:

BOOL success = [db executeUpdate:[NSString 
    stringWithFormat:@"UPDATE Person SET gender=? WHERE name LIKES ?",gender,name]]; 

In FMDB Methode [executeUpdate] verwenden "?" anstelle von "% @"

0

Bitte versuchen Sie dies:

NSString *updateQuery = [NSString stringWithFormat:@"UPDATE YOUR_DATABASE_TABLE_NAME SET row_value = %@",@"fmdb"]; 
Bool updateSuccess = [FMDataBaseObject ExecuteUpdate:updateQuery];