Заявления не принимаются в sqlite3 при использовании оболочки - PullRequest
3 голосов
/ 26 апреля 2010
[sqlite executeQuery:@"UPDATE UserAccess SET Answer ='Positano';"];
NSArray *query2 = [sqlite executeQuery:@"SELECT Answer FROM UserAccess;"]; 
NSDictionary *dict = [query2 objectAtIndex:0]; 
NSString *itemValue = [dict objectForKey:@"Answer"]; 
NSLog(@"%@",itemValue);

Это печатает Позитано в этот момент .. Но когда я просто печатаю без запроса на обновление снова. Я получаю старую запись о Париже. Я попытался [sqlite commit]; что тоже не работает. Даже если я создаю простую таблицу, она запускается в первый раз, а затем снова, когда я нажимаю кнопку создания, она говорит, что таблица уже существует, НО, когда я снова запускаю ее, она создает таблицу снова, вместо того, чтобы выдавать ошибку, что таблица уже существует.

Что я делаю не так ??? Я использую http://th30z.netsons.org/2008/11/objective-c-sqlite-wrapper/ обертка.

С уважением, Начинающие

Ответы [ 2 ]

2 голосов
/ 26 апреля 2010

Похоже, вы не совершили транзакцию.

В файле Sqlite.m есть методы beginTransaction и commit. Или вы можете попробовать установить db в режим автоматической фиксации.

0 голосов
/ 05 мая 2010
-(void)createEditableCopyOfDatabaseIfNeeded 
{
    // Testing for existence
    BOOL success;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"MyDatabase.sqlite"];
    success = [fileManager fileExistsAtPath:writableDBPath];
    if (success) return;
    // The writable database does not exist, so copy the default to the appropriate location.
    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyDatabase.sqlite"];
    success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
    if(!success)
    {
        NSAssert1(0,@"Failed to create writable database file with Message : '%@'.",[error localizedDescription]);
    }
}

In xxxxAppdelegate.m

Это было решение

...