[英]iphone FMDB can't find table
- init
{
if(![super init]) return nil;
//the database is stored in the application bundle.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingFormat:@"/base.sqlite"];
NSLog(@"%@",path);
db = [FMDatabase databaseWithPath:path];
[db setLogsErrors:YES];
if (![db open]) {
NSLog(@"Could not open db.");
return 0;
} else {
NSLog(@"DB Open....");
}
FMResultSet *rs = [db executeQuery:@"SELECT * FROM settings"];
return self;
}
这就是我用来尝试从设置访问数据的代码。 但这给出了一个错误(我可以向您保证有一个设置表!)
这是码头的转储
BEGIN TRANSACTION;
CREATE TABLE About (id integer PRIMARY KEY AUTOINCREMENT,key varchar UNIQUE,value text);
DELETE FROM sqlite_sequence;
CREATE TABLE settings (version integer,updated timestamp,owner varchar);
INSERT INTO "settings" VALUES(1,'2009-05-11 14:29:07','boulevart');
COMMIT;
和错误:
2009-05-11 16:14:19.799 SummerGuide[9892:20b] /Users/andyjacobs/Library/Application Support/iPhone Simulator/User/Applications/762630F5-78CB-41A4-85C2-964316ACFE1D/Documents/base.sqlite
2009-05-11 16:14:19.801 SummerGuide[9892:20b] DB Open....
2009-05-11 16:14:19.804 SummerGuide[9892:20b] DB Error: 1 "no such table: settings"
2009-05-11 16:14:19.804 SummerGuide[9892:20b] DB Query: SELECT * FROM settings
奇怪的是,如果我将路径更改为例如/baseeeeee.sqlite(不是文件),它仍然显示“ DB Open ....”。
我只是将现有的sqlite文件(base.sqlite)添加到了我的追索文件夹,并将sqlite3 lib添加到了我的框架。
要获取应用包中文件的路径,请使用以下命令:
[[NSBundle mainBundle] pathForResource:@"base" ofType:@"sqlite"];
要实际打开数据库,您可能必须首先将其复制到Documents目录,因为尝试修改应用程序捆绑包中的文件是一个坏消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.