我有一个包含FMDB的项目来管理SQLite个数据库。我导入并链接了FMDB包装器,但问题是当我查询数据库时没有显示结果:
使用Firefox SQLite管理器(Ubuntu)创建的sqlite数据库,我将其复制到Xcode。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"db.sqlite"];
FMDatabase *db = [FMDatabase databaseWithPath:path];
[db open];
FMResultSet *fResult= [db executeQuery:@"SELECT * FROM mytable"];
while([fResult next])
{
NSLog(@"%@",[fResult stringForColumn:@"title"]);
}
[db close];
答案 0 :(得分:1)
如果您已将数据库复制到xCode中,那么您应首先在应用程序的主bundle资源路径中搜索您的数据库,然后将其复制到Documents目录中(如果它尚不存在),只有这样您才能使用它。您可能希望使用lastErrorMessage
和lastErrorCode
消息调试FMDatabase对象。
FMDatabase *db = [FMDatabase databaseWithPath:path];
NSLog(@"database instantiated: %@", db];
[db open];
NSLog(@"Database has encountered an error with message: %@. And code: %d", db.lastErrorMessage, db.lastErrorCode];
FMResultSet *fResult= [db executeQuery:@"SELECT * FROM mytable"];
while([fResult next])
{
NSLog(@"%@",[fResult stringForColumn:@"title"]);
}
[db close];
另一个问题当然可能听起来很愚蠢,但如果你的'mytable'不包含任何内容,那么while循环表达式将始终为false。但我最好的猜测 - 数据库不在Documents目录中。