无法使用FMDB包装器插入SQLITE数据库

时间:2013-03-11 23:50:09

标签: ios sqlite fmdb

我是IOS开发的新手,所以我跟着这个

tutorial

正如本教程中所提到的,我使用SQLITE命令行创建了数据库,创建了我的表,然后通过将数据库添加到Supporting Files文件夹,将数据库导入到我的XCode 4.6项目中。

我只想用数据填充表格,所以我有一个函数,首先找到我的数据库并将其复制到Documents文件夹(如果不存在):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"Customers.db"];
FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath];

这可以正常工作,因为writebleDBPath指向Customers.db所在的实际路径(在项目的Documents文件夹中)

现在我打开数据库并尝试添加新记录:

[db open];
BOOL success =  [db executeUpdate:@"INSERT INTO customers (firstname,lastname) VALUES (?,?);",[patient.firstName UTF8String],[patient.secondName UTF8String], nil];

[db close];

但成功价值总是“没有”。

我包含用于创建sqlite数据库的代码:

CREATE TABLE customers(id integer primary key, firstname varchar(30), lastname varchar(30))

我错过了什么?

2 个答案:

答案 0 :(得分:1)

如果id是主键,也许您也需要设置它。

尝试调用[db lastErrorMessage]来查看问题所在。

答案 1 :(得分:0)

你在教程中省略了一步:

NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];

从捆绑包中复制数据库文件。这假设您创建了数据库及其架构,并将其包含在带有应用程序的包中。