Ich mache eine SQLite für iOS. Es ist mir gelungen, Daten zu speichern und zu präsentieren, aber nicht zu löschen. Das ist meine Methode Create:Was ist los mit meiner iOS sqlite delete-Methode?
- (void) createTable: (NSString *) tableName
withField1: (NSString *) field1
withField2: (NSString *) field2
withField3: (NSString *) field3
withField4: (NSString *) field4{
char *err;
NSString *sql = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('%@' "
"TEXT PRIMARY KEY, '%@' TEXT, '%@' TEXT, '%@' TEXT);", tableName, field1,field2,field3,field4];
if(sqlite3_exec(db,[sql UTF8String], NULL,NULL, &err) != SQLITE_OK) {
sqlite3_close(db);
NSAssert(0, @"Could not create table");
} else {
NSLog(@"table created");
}
}
Das ist mein speichereDaten Methode:
-(void) saveNewData :(NSString*)nickname :(NSString*)url :(NSString*)uid :(NSString*)pswd{
sqlite3_stmt *statement;
if (sqlite3_open([[self filePath] UTF8String], &db) == SQLITE_OK) {
NSString *sql =[NSString stringWithFormat:@"INSERT INTO accountListDB ('nickname', 'url', 'uid', 'pswd') VALUES ('%@', '%@', '%@', '%@')", nickname, url, uid, pswd];
const char *insert_stmt = [sql UTF8String];
sqlite3_prepare_v2(db, insert_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE) {
NSLog(@"data added");
}else{
NSLog(@"failed to added");
}
sqlite3_finalize(statement);
sqlite3_close(db);
}
}
Das ist mein deleteData Verfahren, das nicht funktioniert:
-(void) deleteData:(NSString*)nickname :(NSString*)url :(NSString*)uid :(NSString*)pswd{
sqlite3_stmt *statement;
if (sqlite3_open([[self filePath] UTF8String], &db) == SQLITE_OK) {
NSString *sql =[NSString stringWithFormat:@"DELETE FROM accountListDB WHERE nickname = %@", nickname];
const char *delete_stmt = [sql UTF8String];
sqlite3_prepare_v2(db, delete_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE) {
NSLog(@"data deleted");
}else{
NSLog(@"failed to delete");
}
sqlite3_finalize(statement);
sqlite3_close(db);
}
}
Er scheiterte kehrt zu löschen .
Was ist die Ausgabe von 'filePath'? – fuzz
[self filePath] gibt Dokumente zurückDirectory/db.sql –
Erstellen Sie keine Abfragen mit 'stringWithFormat:'. Binden Sie Werte ordnungsgemäß in die vorbereitete Anweisung ein. – rmaddy