我正在做一个项目在ios中,我有下一个问题: 我正在使用现有的数据库,并且第一步(打开数据库)工作正常,但当时我尝试读取我遇到错误的数据。从ios中的现有数据库中读取数据
控制台仅显示:2013年2月26日14:46:59.999 MyApp的[66537:C07]问题读取数据
-(void) openDB
{
@try {
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"data.db"];
BOOL success = [fileMgr fileExistsAtPath:dbPath];
if(!success)
{
NSLog(@"Cannot locate database file '%@'.", dbPath);
}
if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK))
{
NSLog(@"An error has occured.");
}
}
@catch (NSException *exception) {
NSLog(@"An exception occured: %@", [exception reason]);
}
}
-(void) getData{
NSString *sql = @"SELECT * FROM frases";
sqlite3_stmt * stmt;
if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &stmt, nil) != SQLITE_OK) {
NSLog(@"problem reading data");
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self openDB];
[self getData];
}
登录数据库的错误:'的NSLog(@ “数据库错误: '%s' 的。” sqlite3_errmsg(分贝));'。数据库中很可能没有名为'frases'的表。另外,摆脱'try/catch'块。只要做一般的错误检查。 – rmaddy 2013-02-26 18:11:29
谢谢。确切地说......但是,当我用数据库浏览器打开文件时,表格出现。会是什么呢? – Fede 2013-02-26 18:21:48
从设备/模拟器中删除应用程序,并进行干净的构建。数据库可能存在旧版本,并且没有正确更新。请记住,由于数据库位于资源包中,因此它将为只读数据库。 – rmaddy 2013-02-26 18:30:46