2013-03-18 73 views
0

你能发现任何会导致它不起作用的东西吗?删除SQLITE行UITABLEVIEW

- (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 

UPDATE:设法得到它的工作。我只是想念。

sqlite3_step(compiledStatement) 

无论如何,谢谢。

+0

打开数据库?你能否把你的问题和日志一起包括在内? – 2013-03-18 18:41:21

+1

xcode删除设备上的数据库对我来说是新消息。 – 2013-03-18 18:41:23

回答

1

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

看这里:Unable to connect SQLite Database in iOS

+0

我将如何将它复制到文档文件夹中? – 2013-03-18 18:47:29

+0

我添加了一个有用问题的链接。 – 2013-03-18 19:00:19

+0

我很确定我的数据库已经打开。因为所有内容都是从数据库中显示的。这只是删除部分,似乎没有工作。 – 2013-03-18 19:09:31