2013-03-18 2 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

открыт база данных? Могли бы, пожалуйста, включить журналы вместе с вопросом ур? –

+1

Это новость для меня, что xcode удаляет базы данных на устройствах. –

ответ

1

В iOS у вас нет доступа для записи к набору приложений. Предлагаемый способ - скопировать базу данных в папку документа при первом запуске приложения, а затем управлять базой данных.

Оставить заявку: Unable to connect SQLite Database in iOS

+0

Как скопировать его в папку документа? –

+0

Я добавил ссылку на полезный вопрос. –

+0

Я уверен, что моя база данных уже открыта. Потому что все отображается из базы данных. Это просто часть удаления, которая, похоже, не работает. –

Смежные вопросы