[iPhone-Sqlite3]sqlite3_prepare_v2() 不返回 SQLITE_OK,调试
这是关于这个×××的定义。
#define SQLITE_OK 0
#define SQLITE_ERROR 1
#define SQLITE_INTERNAL 2
#define SQLITE_PERM 3
#define SQLITE_ABORT 4
#define SQLITE_BUSY 5
#define SQLITE_LOCKED 6
#define SQLITE_NOMEM 7
#define SQLITE_READONLY 8
#define SQLITE_INTERRUPT 9
#define SQLITE_IOERR 10
#define SQLITE_CORRUPT 11
#define SQLITE_NOTFOUND 12
#define SQLITE_FULL 13
#define SQLITE_CANTOPEN 14
#define SQLITE_PROTOCOL 15
#define SQLITE_EMPTY 16
#define SQLITE_SCHEMA 17
#define SQLITE_TOOBIG 18
#define SQLITE_CONSTRAINT 19
#define SQLITE_MISMATCH 20
#define SQLITE_MISUSE 21
#define SQLITE_NOLFS 22
#define SQLITE_AUTH 23
#define SQLITE_FORMAT 24
#define SQLITE_RANGE 25
#define SQLITE_NOTADB 26
#define SQLITE_ROW 100
#define SQLITE_DONE 101
当调用 sqlite3_prepare_v2()
函数的时候,是一个将SQL语句编译为sqlite内部一个结构体(sqlite3_stmt).
该结构体中包含了将要执行的的SQL语句的信息.
通常情况下,应该是返回0。还有一些时候是返回其他数值。
我以1为例,简单介绍一下错误解决的思路和方法:
#define SQLITE_ERROR 1
我们尝试用以下代码来进行测试:
// Get the path to the documents directory and append the databaseName
NSString *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:databaseName];
NSFileManager *fileManager = [NSFileManager defaultManager];
上面的这个path,我们可以看到,我们需要连接的数据库的那个路径。有时候,如果你的工程创建好了以后,在运行时会把database复制 到这个路径下面。如果中途数据库发生了变化,随之有可能没有拷贝过去,那么这个路径下的数据库文件会和你工程里面的不一致。也许这个path下面的是一个 大小为0字节的空数据库。所以通常即便是发现了数据库的存在,但是也不能保证你数据库的结构体是正确的。
BOOL find = [fileManager fileExistsAtPath:path];
if (find) {
NSLog(@"Database file have already existed.");
if(sqlite3_open([path UTF8String], &database_) != SQLITE_OK) {
sqlite3_close(database_);
NSLog(@"Error: open database file.");
return NO;
}
return YES;
}
else {
sqlite3_close(database_);
NSLog(@"Error: open database file.");
return NO;
}
上面是打开的代码。下一篇,我将要分享一下如何购建一个SqliteHelper类及其方法。
http://alexliu.cnblogs.com
转载于:https://blog.51cto.com/ruisi/749741
[iPhone-Sqlite3]sqlite3_prepare_v2() 不返回 SQLITE_OK,调试相关推荐
- Linux平台上SQLite数据库教程(二)——C语言API介绍
http://blog.csdn.net/u011192270/article/details/48086961 前言:本文将介绍几个基本的SQLite3数据库的C语言API接口,主要用到两个文件:s ...
- SQLite剖析之编程接口详解
前言 使用过程根据函数大致分为如下几个过程: sqlite3_open() sqlite3_prepare() sqlite3_step() sqlite3_column() sqlite3_fina ...
- 通过Mac远程调试iPhone/iPad上的网页(转)
我们知道在 Mac/PC 上的浏览器都有 Web 检查器这类的工具(如最著名的 Firebug)对前端开发进行调试,而在 iPhone/iPad 由于限于屏幕的大小和触摸屏的使用习惯,直接对网页调试非 ...
- sqlite3 内存持续增加_sqlite3使用简介(内含解决sqlite内存的方法)
一.使用流程 要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll ...
- sqlite3打开中文路径数据文件失败解决方法
今天用sqlite3访问中文路径的数据库文件,发现sqlite3_open函数返回失败,问度娘后,有网友建议sqlite3_open16打开,sqlite3_open16和sqlite3_open区别 ...
- 基于C API的SQLite3基本数据库操作
SQLite是一款开源嵌入式文件型数据库,这个主要是和其他一些C/S架构的关系型数据库比较而来的,比如MySQL等. 说他是嵌入式,因为SQLite的所有功能全部包装在一个dll中,我们只需要使用其中 ...
- sqlite3使用简介(内含解决sqlite内存的方法)
一.使用流程 要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll ...
- sqlite3使用简介
一.使用流程 要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll ...
- sqlite3学习笔记-方法介绍和测试代码
创建数据库 :sqlite3 test.db 查看数据数据 : .databases 创建表 :create table student (id integer primary key autoinc ...
最新文章
- win10 mysql5.5无响应_Win10安装mysql5.5安装最后一步停住卡死未响应的解决方法
- 探究Java如何实现原子操作(atomic operation)
- java学习(27):巩固练习
- 报名即将截止,“梧桐杯”大数据应用创新大赛,邀你进入大数据先锋阵营
- sql2012 ssrs_SQL Server Reporting Services(SSRS)共享数据集
- hystrix文档翻译之Dashboard
- 第一模块:开发基础 第1章 练习及作业
- java课程 教 学小结_Java私塾中级课程学习感受和小结3
- 科技文献检索(八)——检索技术
- Java——事故应急
- Inpaint图片去水印工具
- Linux系统下常用的中文输入法
- 什么人适合学平面设计?
- Hugo博客双线部署
- 2010 年全国大学生数学建模竞赛甘肃赛区 获奖情况
- 克拉默法则的理解记忆方法
- 百度地图标注点+搜索
- 怎么修改电脑或者Apple手机、iPad等设备上图标的大小
- 基于Python(Django)+MySQL 实现(Web)SQL智能检测系统的设计与实现【100010694】
- Voyager如何使用Compass
热门文章
- iOS开发JSON字符串和字典互转
- [Bzoj2282]消防(二分答案+树的直径)
- saltstack pkg模块用法
- HTML5会砸掉iOS和Android开发者的饭碗么?
- WiFi CC3200模块 加速IOT物联网发展
- WP8.1开发中复杂JSON绑定数据时的方法
- 网页主动探测工具使用
- PowerShell_5_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
- [你必须知道的css系列]第一回:丰富的利器2:CSS选择符之子选择符、相邻选择符...
- python-深浅copy-18