SQLite被锁定解决办法-iOS
来源:互联网 发布:nginx 第三方模块开发 编辑:程序博客网 时间:2024/05/17 22:56
第一次在项目中遇到使用SQLite,之前写Android的时候同样的流程没有出错。
Android对SQLite的”增删改查”——SQLiteDatabase
Android SQLite操作之“SQLiteOpenHelper”
这里也可能我只是写了一个Demo,就一个页面,所以没有发现那个错误。但是iOS的APP我是多处使用SQLite,而且我是把SQLite的操作写在Controller之外以接口方式使用的。
于是在页面跳转往复的过程中出现了SQLite被锁定的情况。查了一些资料:SQLite只能支持单线程,或者说SQLite不能被同时登录。于是我查了一下我写的函数,每个都是打开数据库开始,关闭数据库结尾,明着看没什么问题。后来急着上线,就写了单例模式去访问数据库,最终解决问题。
DBSQLite.m关键代码:
+ (DBSQLite *)sharedDataBaseHandle{ static DBSQLite *manager = nil; if (manager == nil) { manager = [[DBSQLite alloc] init]; } return manager;}static sqlite3 * db = nil; //设置句柄 通过句柄对数据库进行操作-(sqlite3 *)openDB{ if (db != nil) { return db; } NSArray *test = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString * fileName = [[test lastObject]stringByAppendingPathComponent:@"dbname.db"]; sqlite3_open(fileName.UTF8String, &db); return db;}
关闭SQLite
-(void)closeDB{ if (sqlite3_close(db) == SQLITE_OK){ db = nil; } else {}}
这样保证db只被实例化一次,通过db这个句柄完成对SQLite的操作。
最后Controller中调用
DBSQLite * db = [DBSQLite sharedDataBaseHandle];[_db.functionname()];
具体对SQLite的操作和代码注释可以参考iOS SQLite3 “增删改查”(Objective-C)
0 0
- SQLite被锁定解决办法-iOS
- ios设备密码被锁定解决办法
- SVN 被锁定解决办法!!!
- SVN被锁定解决办法
- oracle 数据表被锁定解决办法
- Oracle中被锁定的解决办法
- sql sa 账号被锁定的解决办法
- Oracle11g用户被频繁锁定的解决办法
- sqlite 锁定的问题
- ArcSDE锁定的解决办法
- Java版:Sqlite数据库锁定
- IE标题与注册表被锁定的解决办法
- IE标题与注册表被锁定的解决办法
- Sql server数据库的sa账户被锁定的解决办法
- oracle用户被锁定the account is locked的解决办法
- install apt-get 时被锁定的解决办法
- oracle 用户总是 频繁的被锁定 的解决办法
- ALM里的对象被锁定的解决办法
- 当社会行业的行业定制软件采购,市场需求不再旺盛怎么办?
- 未名湖边的烦闹
- 1050. 螺旋矩阵(25)
- jupyter install problems for python2.7
- jQuery.ajax()
- SQLite被锁定解决办法-iOS
- hashSet不是线程安全的验证
- Android常见内存泄漏案例(精品)
- 树状数组(二)与poj2155
- memcached源码分析-----item过期失效处理以及LRU爬虫
- STM32单片机工作日记
- IDEA 2016.1 Maven SpringMVC学习教程(一)
- Android------读取并选择系统联系人数据
- 【java总结】Genneric泛型