iOS常见错误1-SQLite错误-SQLITE_CANTOPEN和SQLITE_MISUSE

在iOS开发中使用SQLite时候经常会发生一些错误,虽然都是很小的问题,但是不注意的话会耽误很长时间。
1、因为数据库路径错误造成SQLITE_CANTOPEN和SQLITE_MISUSE错误
//设置数据库的路径
-(NSString *)dataBasePath{//懒加载if (_dataBasePath==nil){//这是正确的路径//NSString * documents=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];//这是错误的路径,程序没有读写这个文件夹的权限,如果把数据库放在这里,就会造成错误NSString * documents=NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)[0];self.dataBasePath=[documents stringByAppendingPathComponent:@"myDB.sqlite"];NSLog(@"myDB.sqlite路径=%@", _dataBasePath);}return _dataBasePath;}

运行结果:因为程序没有此文件夹的权限,会造成打开数据库SQLITE_CANTOPEN错误,并且建表会造成SQLITE_MISUSE错误

2015-10-30 20:35:00.548 sqliteBusy[5102:502965] myDB.sqlite路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/0C3A8481-EE08-42C7-B147-2CBE5B986DC4/Library/Documentation/myDB.sqlite
2015-10-30 20:35:00.550 sqliteBusy[5102:502965] myDB.sqlite数据库打开失败。错误代码=14
2015-10-30 20:35:00.550 sqliteBusy[5102:502965] UserInfo建表失败.错误代码=21
2015-10-30 20:35:00.550 sqliteBusy[5102:502965] myDB.sqlite数据库关闭成功
2、因为操作完数据库没有及时关闭,造成数据库BUSY错误。SQLITE_BUSY
//检查数据库中是否有某个用户
-(BOOL)checkUserWithName:(NSString*)name{BOOL checkOK=NO;[self openDB];NSString *sqlString=@"select m_id from  UserInfo where m_name = ?";sqlite3_stmt *stmt=NULL;int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);if (result==SQLITE_OK){NSLog(@"搜索预执行正确");sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);while (sqlite3_step(stmt)==SQLITE_ROW){//找到符合条件的记录checkOK = YES;return checkOK;//在这里返回,直接跳出方法,没有关闭数据库,会造成数据库错误}}else NSLog(@"预执行错误");sqlite3_finalize(stmt);[self closeDB];NSLog(@"关闭搜索伴随指针");return checkOK;
}

运行结果:因为操作数据库后没有关闭,再对数据库进行Delete,Update操作的时候会引发SQLITE_BUSY错误。
2015-10-30 21:37:26.341 sqliteBusy[5272:535359] myDB.sqlite数据库打开成功
2015-10-30 21:37:26.341 sqliteBusy[5272:535359] 删除用户预执行正确
2015-10-30 21:37:26.343 sqliteBusy[5272:535359] 删除用户失败。错误代码=5
2015-10-30 21:37:26.343 sqliteBusy[5272:535359] 删除用户关闭伴随指针
2015-10-30 21:37:26.343 sqliteBusy[5272:535359] myDB.sqlite数据库关闭成功

3、SQLite错误代码
 #define SQLITE_OK           0   /* Successful result */
/* beginning-of-error-codes */
#define SQLITE_ERROR        1   /* SQL error or missing database */
#define SQLITE_INTERNAL     2   /* Internal logic error in SQLite */
#define SQLITE_PERM         3   /* Access permission denied */
#define SQLITE_ABORT        4   /* Callback routine requested an abort */
#define SQLITE_BUSY         5   /* The database file is locked */
#define SQLITE_LOCKED       6   /* A table in the database is locked */
#define SQLITE_NOMEM        7   /* A malloc() failed */
#define SQLITE_READONLY     8   /* Attempt to write a readonly database */
#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite3_interrupt()*/
#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT     11   /* The database disk image is malformed */
#define SQLITE_NOTFOUND    12   /* Unknown opcode in sqlite3_file_control() */
#define SQLITE_FULL        13   /* Insertion failed because database is full */
#define SQLITE_CANTOPEN    14   /* Unable to open the database file */
#define SQLITE_PROTOCOL    15   /* Database lock protocol error */
#define SQLITE_EMPTY       16   /* Database is empty */
#define SQLITE_SCHEMA      17   /* The database schema changed */
#define SQLITE_TOOBIG      18   /* String or BLOB exceeds size limit */
#define SQLITE_CONSTRAINT  19   /* Abort due to constraint violation */
#define SQLITE_MISMATCH    20   /* Data type mismatch */
#define SQLITE_MISUSE      21   /* Library used incorrectly */
#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */
#define SQLITE_AUTH        23   /* Authorization denied */
#define SQLITE_FORMAT      24   /* Auxiliary database format error */
#define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */
#define SQLITE_NOTADB      26   /* File opened that is not a database file */
#define SQLITE_NOTICE      27   /* Notifications from sqlite3_log() */
#define SQLITE_WARNING     28   /* Warnings from sqlite3_log() */
#define SQLITE_ROW         100  /* sqlite3_step() has another row ready */
#define SQLITE_DONE        101  /* sqlite3_step() has finished executing */
/* end-of-error-codes */

iOS常见错误1-SQLite错误-SQLITE_CANTOPEN,SQLITE_MISUSE和SQLITE_BUSY相关推荐

  1. iOS常见错误8-Missing iOS Distribution signing identity for “XXXXX”. Xcode can request one for you.

    iOS常见错误8-Missing iOS Distribution signing identity for "XXXXX". Xcode can request one for ...

  2. 音频开发中常见的四个错误

    以下内容主要为音频开发人员所编写,但同样也能为其他领域并与此相关的开发者带来帮助.在下文当中我将介绍针对开发人员的诊断工具,并分享常见的四个错误以及如何检测问题是否存在并做得更好. 文 / Micha ...

  3. 初学Python,我给你总结了常见的17个错误

    点击"视学算法","置顶"公众号 重磅干货,第一时间送达 来源:开源中国 链接:https://www.oschina.net/question/89964_6 ...

  4. R语言ggplot2可视化在散点图中的每个点上绘制两个错误条:常见的是垂直错误条,它对应于Y值点上的错误(error bar),添加与X轴(水平)相关的错误条(error bar)

    R语言ggplot2可视化在散点图中的每个点上绘制两个错误条:常见的是垂直错误条,它对应于Y值点上的错误(error bar),添加与X轴(水平)相关的错误条(error bar) 目录

  5. Uipath开发过程中最常见的5类错误

    UiPath RPA开发人员的5个常见错误 #1 未找到选择器/ UI元素未发现 #2 调用的对象是空的 #3 活动超时问题 #4图片未找到问题 #5保存下载文件的问题 UiPath RPA开发人员的 ...

  6. C语言程序设计 | 动态内存管理:动态内存函数介绍,常见的动态内存错误,柔性数组

    动态内存管理目录: 动态内存函数的介绍 常见的动态内存函数的错误 柔性数组 为什么会有动态内存管理呢 我们在日常使用中,创建一个数组,一个变量时都会开辟空间 如: int a; //在栈上开辟一个四字 ...

  7. eclipse软件有时会退出弹出一串错误弹框_修复iPhone上的iOS 13软件更新失败错误...

    如果由于"软件更新失败:下载iOS 13时发生错误"错误而无法安装刚刚发布的用于检查新的暗模式功能的iOS 13更新,那么我可以理解这种挫败感.但幸运的是,有些解决方案可以尝试修复 ...

  8. mysql 3种报错_MySQL读取Binlog日志常见的3种错误-阿里云开发者社区

    MySQL读取Binlog日志常见的3种错误 mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4' 当我们在my. ...

  9. mysql 错误问题_Mysql常见的几个错误问题及解决方法:

    Mysql常见的几个错误问题及解决方法: 1.问题: mysql DNS反解:skip-name-resolve 错误日志有类似警告: 点击(此处)折叠或打开 120119 16:26:04 [War ...

  10. python中常见的几种错误

    python中常见的几种错误: 1.end前面一定加逗号 2.命令输入错误 3.冒号中英文切换 4.命令缩进错误 5.等于号要双等于,否则一个等于号是赋值 6.命令之间正确搭配

最新文章

  1. 在RedHat上安装gcc,java 和 eclipse-rcp
  2. 打印N个数组整体最大的TopK
  3. 中国碳酸氢钠干粉灭火剂市场产销分析与盈利前景策略报告2022年
  4. 机器学习(二)——广义线性模型、生成学习算法
  5. 取色器 for Mac
  6. 盘锦工业机器人厂家_盘锦制造进入“机器人时代”
  7. Jenkinsfile脚本实现master、slave节点(agent)共享内容
  8. 基于matlab雷达算法,基于MATLAB的雷达信号处理
  9. 电力拖动自动控制系统复习(二)
  10. 谷歌翻译失效,解决网页谷歌翻译的问题-只能解决页面翻译
  11. 李智慧 - 架构师训练营总览
  12. 用Python求解拿鸡蛋问题
  13. Win10应用程序添加到右键中
  14. 训练和推理阶段的BN和Dropout
  15. 我的Java学习之路(三)-- 自动饮料售卖机控制台程序
  16. 让我们一起来做软件专利流氓吧
  17. 金融行业必看20部电影
  18. 各版本的Hadoop安装包下载
  19. 数据挖掘学习之认识数据
  20. MongoDB 文档字段增删改

热门文章

  1. 搞笑git 程序员改bug_这些神奇又搞笑的bug,真的让程序员万万没想到!
  2. vlog短视频_适用于Vlog或视频网络的20+ WordPress主题
  3. CSMA/CD 简要介绍
  4. 读 Derek Sivers: Anything You Want
  5. 直播如何解决延时问题?谈如何解决延时和连麦的老难题
  6. linu系统初始化配置
  7. 资深ios开发工程师收藏的iOS干货文章、大神的blog博客
  8. 背包问题(Knapsack Problem)—— 0/1 背包问题 —— 总价值最大问题
  9. Openwrt 15.05.1增加对MT7620a NAND flash的支持
  10. 数学三次危机(二)毕达哥拉斯学派的数学思想