0

你能发现任何会导致它不起作用的东西吗?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if (editingStyle == UITableViewCellEditingStyleDelete) {
    int record_to_delete = [[[data objectAtIndex:indexPath.row] recordID] integerValue];
    [data removeObjectAtIndex:indexPath.row];
    [self.tableView deleteRowsAtIndexPaths:[NSMutableArray arrayWithObject:indexPath] withRowAnimation:YES];
    //Delete from TABLENAME where CRITERIA1=VALUE1 (AND CRITERIA2=VALUE2...)
    //Delete from Data where RecordID=xxx

    sqlite3 *database;
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
        NSString *sqlStatement = [NSString stringWithFormat:@"delete from Data where RecordID = %d",record_to_delete];
        NSLog(@"Statement is: %@", sqlStatement);
        sqlite3_stmt *compiledStatement;
        NSLog(@"Statement");
        if(sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK){
        }
        NSLog(@"Deleting");
        sqlite3_finalize(compiledStatement);
        NSLog(@"Deleted");
    }
    sqlite3_close(database);

}
}

SQL 语句在我的数据库软件中执行时工作正常。但是,当在 iPhone 模拟器上运行时,它不会从数据库中删除它。任何帮助将不胜感激。对不起,我不能更具体。

谢谢

2013-03-18 18:45:07.211 Navigation[842:c07] Statement is: delete from Data where RecordID = 1
2013-03-18 18:45:07.212 Navigation[842:c07] Statement
2013-03-18 18:45:07.212 Navigation[842:c07] Deleting
2013-03-18 18:45:07.213 Navigation[842:c07] Deleted

更新:设法让它工作。我只是失踪了。

sqlite3_step(compiledStatement)

不管怎么说,还是要谢谢你。

4

1 回答 1

1

在 iOS 中,您没有对 app bundle 的写入权限。建议的方法是在第一次运行应用程序时将数据库复制到文档文件夹中,然后从那里管理数据库。

看这里:无法在 iOS 中连接 SQLite 数据库

于 2013-03-18T18:45:01.763 回答