从sqlite3_open中顺序调用的库例程

时间:2013-09-13 09:39:42

标签: iphone ios sqlite

我正在尝试在应用程序首次加载时创建/打开sqlite数据库。但是我经常收到错误由于未捕获的异常导致应用程序'NSInternalInconsistencyException',原因:'错误:无法打开,因为库例程调用不按顺序' 下面是我在主viewcontroller文件中的代码:

- (NSString *) filePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"bp.sql"];
}

- (void)openDB {
    if (sqlite3_open([[self filePath] UTF8String], &db) != SQLITE_OK) {
        sqlite3_close(db);
        NSAssert1(0, @"Error: Failed to open because %s", sqlite3_errmsg(db));
    }
    else {
        NSLog(@"Database opened");
    }
}

    - (void)viewDidLoad {
    [self openDB];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

1 个答案:

答案 0 :(得分:0)

此错误的原因是您在sqlite3_errmsg之后致电sqlite3_close;你得到一个在清理过程中发生的无害错误。

您必须在sqlite3_errmsg之前致电sqlite3_close以获取实际错误。