【发布时间】:2014-06-13 07:19:05
【问题描述】:
我在打开我的 SQLite3 数据库时遇到了一个奇怪的问题。
场景:用户点击 ListView 上的一行,数据库打开,然后再次成功关闭。直到用户在该行上多次点击后才会出现问题,然后数据库无法打开。该函数传统上在主线程上调用,因此只能发生一个进程,因此理论上可以避免此问题。
函数调用:
[self openDB];
Obj-c 代码:
-(void)OpenDataBase{
if (sqlite3_open([[self dataFilePath] UTF8String], &sharedDataBase)!= SQLITE_OK) {
sqlite3_close(sharedDataBase);
NSLog(@"Failed to open database");
}
}
它记录:
打开数据库失败
访问数据库时出错。错误代码为:21
关于如何解决此问题的任何建议?
编辑这是错误打印输出:无法打开数据库文件
【问题讨论】:
-
使用
sqlite3_errmsg记录错误。 -
顺便说一句 - 不要在无法打开的数据库上调用
sqlite3_close。没有意义。 -
感谢回复,我试过这个 NSLog([NSString stringWithFormat:@"%c", sqlite3_errmsg]);但是它不会打印出数字,它只会打印出一个“?”有什么想法吗?
-
您是否在每次使用后正确关闭数据库?确保您不是只是一遍又一遍地打开数据库而不每次都关闭它。
-
我不知道极限。但是你应该总是清理你使用的东西。仅供参考 - 在我自己的应用程序中,我打开连接一次并在我的应用程序的整个生命周期中使用它。无需每次需要查询时打开和关闭。
标签: ios objective-c database sqlite