这是关于这个×××的定义。

#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,调试相关推荐

  1. Linux平台上SQLite数据库教程(二)——C语言API介绍

    http://blog.csdn.net/u011192270/article/details/48086961 前言:本文将介绍几个基本的SQLite3数据库的C语言API接口,主要用到两个文件:s ...

  2. SQLite剖析之编程接口详解

    前言 使用过程根据函数大致分为如下几个过程: sqlite3_open() sqlite3_prepare() sqlite3_step() sqlite3_column() sqlite3_fina ...

  3. 通过Mac远程调试iPhone/iPad上的网页(转)

    我们知道在 Mac/PC 上的浏览器都有 Web 检查器这类的工具(如最著名的 Firebug)对前端开发进行调试,而在 iPhone/iPad 由于限于屏幕的大小和触摸屏的使用习惯,直接对网页调试非 ...

  4. sqlite3 内存持续增加_sqlite3使用简介(内含解决sqlite内存的方法)

    一.使用流程 要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll ...

  5. sqlite3打开中文路径数据文件失败解决方法

    今天用sqlite3访问中文路径的数据库文件,发现sqlite3_open函数返回失败,问度娘后,有网友建议sqlite3_open16打开,sqlite3_open16和sqlite3_open区别 ...

  6. 基于C API的SQLite3基本数据库操作

    SQLite是一款开源嵌入式文件型数据库,这个主要是和其他一些C/S架构的关系型数据库比较而来的,比如MySQL等. 说他是嵌入式,因为SQLite的所有功能全部包装在一个dll中,我们只需要使用其中 ...

  7. sqlite3使用简介(内含解决sqlite内存的方法)

    一.使用流程 要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll ...

  8. sqlite3使用简介

    一.使用流程 要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll ...

  9. sqlite3学习笔记-方法介绍和测试代码

    创建数据库 :sqlite3 test.db 查看数据数据 : .databases 创建表 :create table student (id integer primary key autoinc ...

最新文章

  1. win10 mysql5.5无响应_Win10安装mysql5.5安装最后一步停住卡死未响应的解决方法
  2. 探究Java如何实现原子操作(atomic operation)
  3. java学习(27):巩固练习
  4. 报名即将截止,“梧桐杯”大数据应用创新大赛,邀你进入大数据先锋阵营
  5. sql2012 ssrs_SQL Server Reporting Services(SSRS)共享数据集
  6. hystrix文档翻译之Dashboard
  7. 第一模块:开发基础 第1章 练习及作业
  8. java课程 教 学小结_Java私塾中级课程学习感受和小结3
  9. 科技文献检索(八)——检索技术
  10. Java——事故应急
  11. Inpaint图片去水印工具
  12. Linux系统下常用的中文输入法
  13. 什么人适合学平面设计?
  14. Hugo博客双线部署
  15. 2010 年全国大学生数学建模竞赛甘肃赛区 获奖情况
  16. 克拉默法则的理解记忆方法
  17. 百度地图标注点+搜索
  18. 怎么修改电脑或者Apple手机、iPad等设备上图标的大小
  19. 基于Python(Django)+MySQL 实现(Web)SQL智能检测系统的设计与实现【100010694】
  20. Voyager如何使用Compass

热门文章

  1. iOS开发JSON字符串和字典互转
  2. [Bzoj2282]消防(二分答案+树的直径)
  3. saltstack pkg模块用法
  4. HTML5会砸掉iOS和Android开发者的饭碗么?
  5. WiFi CC3200模块 加速IOT物联网发展
  6. WP8.1开发中复杂JSON绑定数据时的方法
  7. 网页主动探测工具使用
  8. PowerShell_5_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
  9. [你必须知道的css系列]第一回:丰富的利器2:CSS选择符之子选择符、相邻选择符...
  10. python-深浅copy-18