Iphone 从sqlite3\U open调用的库例程顺序不正确

Iphone 从sqlite3\U open调用的库例程顺序不正确,iphone,ios,sqlite,Iphone,Ios,Sqlite,我试图在应用程序首次加载时创建/打开sqlite数据库。但由于未捕获的异常“NSInternalInconsistencyException”,我不断收到终止应用程序的错误,原因是:“错误:无法打开,因为库例程调用顺序错误” 以下是我在主viewcontroller文件中的代码: - (NSString *) filePath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory,

我试图在应用程序首次加载时创建/打开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.
}

此错误的原因是在
sqlite3\u close
之后调用了
sqlite3\u errmsg
;您将得到一个在清理过程中发生的无害错误


您必须在
sqlite3\u errmsg
之前调用
sqlite3\u close
以获取实际错误。

您的数据库已在未关闭的情况下打开,您正在尝试重新打开数据库。这是在模拟器上第一次运行时发生的。错误更改为。。。无法打开数据库文件现在您知道问题所在(路径不存在,或者不允许您访问)。如何解决此问题?我学习了一个视频教程。此代码应该按照教程的要求工作。我需要做哪些更改?该教程是否真的告诉您使用
NSDocumentationDirectory
,而不是
NSDocumentDirectory
?这就是问题所在。非常感谢。