2012-02-13 7 views
1

Вот код SQLite, который я вызываю и передаю одну переменную. Где проблема?SQLite insert работает в симуляторе, но не на устройстве

-(IBAction)insertPet:(NSString *) name{ 

NSString *query = [NSString stringWithFormat:@"Insert into pet (name) values ('%@');", name]; 
sqlite3_stmt *statement; 

NSLog(@"1 - %@",query); 

if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)==SQLITE_OK) 
{ 

    NSLog(@"2 - %@",query); 

    if(SQLITE_DONE == sqlite3_step(statement)){ 

     NSLog(@"Query - %@",query); 
    } 
    sqlite3_finalize(statement); 
} 
} 
+0

NSLog (@ "1 -% @", запрос) и NSLog (@ "2 -% @", query) проходят через tt. Невозможно достигнуть NSLog (@ «Запрос -% @», запрос). – ksprs8

+0

Это очень помогло бы, если бы вы сказали нам, что сообщение об ошибке было ... –

ответ

0

Я предполагаю, что ваша база данных находится в комплекте приложений. Если это так, вам нужно создать записываемую копию вашей базы данных, чтобы иметь возможность выполнять запросы, которые изменяют базу данных (например, INSERT или UPDATE). Самый популярный способ сделать это - скопировать базу данных из пакета в папку «Документы».

+0

Можете ли вы дать какой-то код/​​совет о том, как это сделать? – Richard

+0

Конечно, используйте [метод NSFileManager] (https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSFileManager/copyItemAtPath: toPath: ошибка :) для копирования. Чтобы проверить ваш путь к документу [здесь] (http://stackoverflow.com/questions/5508433/using-nssearchpathfordirectoriesindomains-properly) – lawicko

0

Что сработало для меня, это удаление приложения с вашего устройства, перезагрузка устройства, очистка приложения в Xcode, а затем загрузка его, а также проверка того, что целевое членство выбрано в базе данных.

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