Привет, я работаю с sqlite, и я успешно добавил данные в базу данных, но проблема в том, что когда я удаляю некоторые данные в каком-то другом табличном представлении и возвращаюсь к своему основному виду, я нажимаю UIBarButton, чтобы вызватьфункция, которая снова проверяет данные в базе данных.
Теперь моя проблема заключается в том, что данные, которые недавно отображаются в таблице, были те, которые были удалены, поэтому я попытался напечатать свой изменяемый массив и в журнале явижу, что их нет таких данных, но и в ячейке табличного представления я вижу эти данные.ниже приведен мой код для чтения данных в БД
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:@"PotsDB.sqlite"];
sqlite3 *database;
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
// Setup the SQL Statement and compile it for faster access
const char *sqlStatement = "SELECT potsName FROM potsDetail;";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
NSString *Potname=[NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 0)];
NSString * pname = [[NSString alloc]initWithFormat:@"%@",Potname];
[potsArray addObject:pname];
NSLog(@"The data in the array is %@",potsArray);
}
}
// Release the compiled statement from memory
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
Также вот код, который я вызываю на кнопку обновления
-(IBAction)RefreshButtonTouched
{
[potsArray removeAllObjects];
[self Read_Potname_FromDB];
[potsTableView reloadData];
}
Запрос на удаление, который я пишу,я думаю, что я делаю некоторую ошибку с удалением здесь
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:@"PotsDB.sqlite"];
sqlite3 *database;
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
// Setup the SQL Statement and compile it for faster access
NSString *deleteStatement = [NSString stringWithFormat:@"delete from potsDetail where potsName = '%@'",sptr];
const char *sqlStatement = [deleteStatement cStringUsingEncoding:NSASCIIStringEncoding];
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
NSString *Potname=[NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 0)];
NSString * pname = [[NSString alloc]initWithFormat:@"%@",Potname];
[potsArray addObject:pname];
//[pname release];
}
}
// Release the compiled statement from memory
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
Пожалуйста, помогите мне, я довольно запутался с этим.Заранее спасибо