2009-05-25 6 views
3

Ich mag meine SQLite-Datenbank zu aktualisieren, aktualisieren, aber ich die Art und Weise, es zu tun nicht finden kann, ist nach dem Code:wie sqlite3 Datenbank in iphone

const char *sqlStatement = "UPDATE frame SET fileExist = '1' WHERE name='$variable'"; 

if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
    NSLog(@"successupdate"); 
} 

aus dem obigen Code i meine Tabelle aktualisieren mag, wo die name ist gleich $ variable name, wie erreicht man das?

+0

Ich glaube nicht, dass eine kompilierte Anweisung kompiliert werden kann, ohne die Tabelle anzugeben, auf die sie angewendet wird. Was versuchst du genau zu erreichen? Es ist mir nicht ganz klar. – sbooth

Antwort

11

Sie sind fast da.

const char *sqlStatement = "UPDATE frame SET fileExist = '1' WHERE name=?"; 

sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL); 

sqlite3_bind_text(sqlStatement, 1, variable, -1, SQLITE_TRANSIENT); 

int success = sqlite3_step(sqlStatement); 

sqlite3_reset(sqlStatement); 

Beachten Sie, dass das Vorbereiten der SQL-Anweisung nur SQLite mitteilt, wie die Anweisung aussieht. Es ist sqlite3_bind_text, die die Variable auf die SQL-Anweisung und die sqlite3_step Zeile, die tatsächlich läuft es gilt.

+0

+1 Für die gute Erklärung des Konzepts. –

0

FMDB ist ein netter Wrapper für SQLite-Anweisungen. Es kümmert sich um die meisten prepare/bind/step/reset Plackerei. Ich empfehle es für jedes Projekt, das eine DB benötigt, aber keine Core Data verwenden möchte.

Verwandte Themen