Я использую базу данных sqlite в своем приложении для iPhone, и в течение срока службы моих приложений пользователь, скорее всего, добавит в него несколько новых записей.Моя проблема заключается в том, что, когда пользователь выключает телефон / закрывает приложение, эти записи теряются, и приложение загружает исходную версию базы данных без добавленных записей.
Я хотел бы знать, чтоМожно ли как-нибудь заменить локальную копию базы данных, хранящейся на iPhone, версией, которую пользователь, по сути, создает, с добавлением новых записей?Если я на самом деле не могу заменить базу данных, что было бы наилучшим способом действий, чтобы новые записи сохранялись?
Спасибо,
Джек
РЕДАКТИРОВАТЬ: База данных хранится в каталоге документов.
РЕДАКТИРОВАТЬ 2:
В основном, если приведенный ниже код выполняется, как бы я зафиксировал изменения, внесенные оператором вставки, чтобы приложенияверсия базы данных обновляется, а не только временная копия?
-(void)insertData{
sqlite3 *database;
sqlite3_stmt *statement;
//Get the path to the documents directory and append the databaseName
AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
NSString *databasePath = [appDelegate m_DatabasePath];
NSLog(@"%@", [appDelegate m_DatabasePath]);
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
NSString *insertSQL = @"INSERT INTO products (name,category,calories, saturates,fat,fibre,sugar,salt, image) VALUES ('Snickers',' Confectionary','300','55','55','55','55','55', 'http://upload.wikimedia.org/wikipedia/en/8/88/Snickers_wrapped.jpg');";
const char *insert_stmt = [insertSQL UTF8String];
if(sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL)== SQLITE_OK)
{
NSLog(@"Here 1");
if(sqlite3_step(statement)==SQLITE_DONE)
{
//Create a new animal object with the data from the database
Product *l_Product = [[Product alloc] initWithName:@"Snickers" category:@"Confectionary" calories:@"300" fat:@"55" saturates:@"50" sugar:@"10" fibre:@"50" salt:@"5" imageURL:@"http://upload.wikimedia.org/wikipedia/en/8/88/Snickers_wrapped.jpg" ];
//Add the animal object to the animals array
[appDelegate.m_Products addObject:l_Product];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Product Added" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Product Not Added" message:@"An error has occured" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
alert=nil;
}
}
// Release the compiled statement from memory
sqlite3_finalize(statement);
sqlite3_close(database);
}
}