我是IOS开发的新手,所以我跟着这个
正如本教程中所提到的,我使用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))
我错过了什么?
答案 0 :(得分:1)
如果id
是主键,也许您也需要设置它。
尝试调用[db lastErrorMessage]
来查看问题所在。
答案 1 :(得分:0)
你在教程中省略了一步:
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
从捆绑包中复制数据库文件。这假设您创建了数据库及其架构,并将其包含在带有应用程序的包中。