繁体   English   中英

使用FMDB插入表失败

[英]Insertion to table fails with FMDB

我试图在应用程序didFinishLaunchingWithOptions中的AppDelegate中的数据库中插入一些值,但是每次它未能插入数据时。

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];


 }

我认为问题出在您的插入查询代码中

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

您再添加了一个,最后在values()中检查并删除了last,它肯定可以工作

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

试试这个查询

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

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

尝试将查询更改为上述查询,这样可以确保表创建成功。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM