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