Вставка в таблицу не удалась с FMDB

Я пытаюсь вставить некоторые значения в свою базу данных в AppDelegate в Application didFinishLaunchingWithOptions, однако каждый раз, когда ему не удается вставить данные.

код

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"db.sqlite"];
FMDatabase *database = [FMDatabase databaseWithPath:path];
[database open];
FMResultSet *results = [database executeQuery:@"select * from settings"];
if(results == nil)
{
 NSLog(@"Creating DB");
 [database beginTransaction];
 [database executeUpdate:@"create table settings(id int primary key, defaultaction text, beepsound text, vibrateeffect text, level text)"];
 NSString *query = [NSString stringWithFormat:@"insert into settings(id,defaultaction,beepsound,vibrateeffect,level) values (%d, '%@', '%@','%@','%@',)",11,@"auto", @"YES", @"YES", @"HIGH"];
 NSLog(@" %@",path);
 BOOL y= [database executeUpdate:query];
 if (!y)
 {
 NSLog(@"insert failed!!");
 }

 [database commit];
 [database close];


 }

person Saty    schedule 21.02.2013    source источник
comment
Разве этот API не выдает вам никаких сообщений об ошибках? Если нет, то вам следует прекратить его использование, так как это дерьмо. Если это так, то извлеките их и сообщите о них.   -  person trojanfoe    schedule 21.02.2013
comment
@trojanfoe... Я использую это очень давно, и оно работает довольно хорошо. Сегодня утром обнаружил такую ​​проблему. Я не могу понять, что делать...   -  person Saty    schedule 21.02.2013
comment
Как я уже сказал, извлеките сообщение об ошибке, и оно даст вам подсказку. Без этого сообщения об ошибке вам все равно никто не сможет помочь.   -  person trojanfoe    schedule 21.02.2013


Ответы (2)


я думаю, проблема в вашем коде вставки запроса

NSString *query = [NSString stringWithFormat:@"insert into settings(id,defaultaction,beepsound,vibrateeffect,level) values (%d, '%@', '%@','%@','%@',)",11,@"auto", @"YES", @"YES", @"HIGH"];

Вы добавили еще один, наконец, в values() проверьте и удалите последний, он определенно будет работать

NSString *query = [NSString stringWithFormat:@"insert into settings(id,defaultaction,beepsound,vibrateeffect,level) values (%d, '%@', '%@','%@','%@')",11,@"auto", @"YES", @"YES", @"HIGH"];

попробуйте этот запрос

person Naimish Karia    schedule 21.02.2013

NSString *query = @"INSERT into settings(id,defaultaction,beepsound,vibrateeffect,level) 
VALUES (%@, %@, %@,%@,%@)";

BOOL y = [database executeUpdate:query, [NSNumber numberWithInt:11],@"auto", @"YES", @"YES", @"HIGH"];

Попробуйте изменить свой запрос на указанный выше запрос, он обязательно сработает, если таблица была создана успешно.

Удачи.

person Ravi Raman    schedule 22.02.2013