`

sqlite API 工具集 一

阅读更多

1.0 总览

SQLite3是SQLite一个全新的版本,它虽然是在SQLite 2.8.13的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API. SQLite3是为了满足以下的需求而开发的:

  • 支持UTF-16编码.
  • 用户自定义的文本排序方法.
  • 可以对BLOBs字段建立索引.

因此为了支持这些特性我改变了数据库的格式,建立了一个与之前版本不兼容的3.0版. 至于其他的兼容性的改变,例如全新的API等等,都将在理论介绍之后向你说明,这样可以使你最快的一次性摆脱兼容性问题.

3.0版的和2.X版的API非常相似,但是有一些重要的改变需要注意. 所有API接口函数和数据结构的前缀都由"sqlite_ "改为了"sqlite3_ ". 这是为了避免同时使用SQLite 2.X和SQLite 3.0这两个版本的时候发生链接冲突.

由于对于C语言应该用什么数据类型来存放UTF-16编码的字符串并没有一致的规范. 因此SQLite使用了普通的void* 类型来指向UTF-16编码的字符串. 客户端使用过程中可以把void*映射成适合他们的系统的任何数据类型.

2.0 C/C++ 接口

SQLite 3.0一共有83个API函数,此外还有一些数据结构和预定义(#defines). (完整的API介绍请参看另一份文档.) 不过你们可以放心,这些接口使用起来不会像它的数量所暗示的那么复杂. 最简单的程序仍然使用三个函数就可以完成: sqlite3_open(), sqlite3_exec(), 和 sqlite3_close(). 要是想更好的控制数据库引擎的执行,可以使用提供的sqlite3_prepare()函数把SQL语句编译成字节码,然后在使用 sqlite3_step()函数来执行编译后的字节码. 以sqlite3_column_开头的一组API函数用来获取查询结果集中的信息. 许多接口函数都是成对出现的,同时有UTF-8和UTF-16两个版本. 并且提供了一组函数用来执行用户自定义的SQL函数和文本排序函数.

2.1 如何打开关闭数据库

typedef struct sqlite3 sqlite3;
   int sqlite3_open(const char*, sqlite3**);
   int sqlite3_open16(const void*, sqlite3**);
   int sqlite3_close(sqlite3*);
   const char *sqlite3_errmsg(sqlite3*);
   const void *sqlite3_errmsg16(sqlite3*);
   int sqlite3_errcode(sqlite3*);

sqlite3_open() 函数返回一个整数错误代码,而不是像第二版中一样返回一个指向sqlite3结构体的指针. sqlite3_open() 和 sqlite3_open16() 的不同之处在于sqlite3_open16() 使用UTF-16编码(使用本地主机字节顺序)传递数据库文件名. 如果要创建新数据库, sqlite3_open16() 将内部文本转换为UTF-16编码, 反之sqlite3_open() 将文本转换为UTF-8编码.

打开或者创建数据库的命令会被缓存,直到这个数据库真正被调用的时候才会被执行. 而且允许使用PRAGMA声明来设置如本地文本编码或默认内存页面大小等选项和参数.

sqlite3_errcode() 通常用来获取最近调用的API接口返回的错误代码. sqlite3_errmsg() 则用来得到这些错误代码所对应的文字说明. 这些错误信息将以 UTF-8 的编码返回,并且在下一次调用任何SQLite API函数的时候被清除. sqlite3_errmsg16() 和 sqlite3_errmsg() 大体上相同,除了返回的错误信息将以 UTF-16 本机字节顺序编码.

SQLite3的错误代码相比SQLite2没有任何的改变,它们分别是:

#define SQLITE_OK           0   /* Successful result */
#define SQLITE_ERROR        1   /* SQL error or missing database */
#define SQLITE_INTERNAL     2   /* An 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 sqlite_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   /* (Internal Only) Table or record not found */
#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   /* (Internal Only) Database table is empty */
#define SQLITE_SCHEMA      17   /* The database schema changed */
#define SQLITE_TOOBIG      18   /* Too much data for one row of a table */
#define SQLITE_CONSTRAINT  19   /* Abort due to contraint 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_ROW         100  /* sqlite_step() has another row ready */
#define SQLITE_DONE        101  /* sqlite_step() has finished executing */
分享到:
评论

相关推荐

    star-api:所有这些星星都属于你

    类别:工具箱 简报网址: 演示:[Demo]( ) API端点: 依存关系 RVM,Ruby,捆绑器 开发时使用Sqlite,生产时使用Postgresql ElasticSearch存储搜索元数据 设置Rails API 您需要克隆仓库,运行 bundle install ...

    Android移动应用开发 第3版 卷1卷2合集part1

    充分利用Android的特性 应用程序发布和分发的进阶话题 附录共7个部分 附录还包含了Android开发常用工具 调试桥和SQLite 的使用指南  《Android移动应用开发 第3版 卷Ⅱ:提高篇》不仅适合Android应用程序开发人员...

    Android移动应用开发 第3版 卷1卷2合集part2

    充分利用Android的特性 应用程序发布和分发的进阶话题 附录共7个部分 附录还包含了Android开发常用工具 调试桥和SQLite 的使用指南  《Android移动应用开发 第3版 卷Ⅱ:提高篇》不仅适合Android应用程序开发人员...

    数据集:一种用于探索和发布数据的开源多功能工具

    一个用于探索和发布数据的开源多功能工具 Datasette是用于浏览和发布数据的工具。 它可以帮助人们获取任何形状或大小的数据,并将其发布为交互式,可探索的网站和随附的API。 Datasette面向数据记者,博物馆策展人...

    UpdateTool:更新包含电影系列的Plex库的IMDB评级并使用IMDB代理接收评级的工具

    用于Plex库中IMDB评级的评级更新工具 通过IMDB,TMDB和TVDB代理为包含电影的Plex库更新IMDB评级的工具。...如果Plex数据库架构更改或IMDB停止提供公共评级数据集,则该工具理论上可能会失效! 这不会是危险的,因为当出

    Android SDK 中文开发文档

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的Android SDK 提供了在Android 平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 · 应用程序...

    嵌入式系统开发基础——基于ARM微处理器和Linux操作系统[滕英岩][习题解答]

    5.3.4 SQLite3的API函数 5.3.5 SQLite3在MiniGUI中的应用 习题 第6章 Qt图形界面应用程序开发 6.1 Qt简介 6.1.1 Qt的历史 6.1.2 Qt中主要的类 6.1.3 信号和槽 6.1.4 Qt的帮助文档 6.1.5 Qt4的特点和优势 ...

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    + Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且 提供了 Eclipse 的插件。 最底层的是一个 Linux Kernel,加载了几个移动设备必要的系统驱动(这么说来 Android...

    Android入门中文教程

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的 Android SDK 提供了在Android平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 应用程序...

    免费下载-Android SDK 中文开发文档

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的Android SDK 提供了在Android 平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 · 应用程序...

    大学生创业项目-垃圾短信过滤APP电信诈骗识别拦截系统源码+项目说明.zip

    大学生创业项目_垃圾短信过滤APP电信诈骗...后端使用scikit-learn模块(数据挖掘和数据分析工具),通过其朴素贝叶斯算法API对短信数据进行垃圾短信的识别: 导入中文垃圾短信数据集(80w数据 有垃圾短信和非垃圾短信)

    Android中文帮助文档.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的 Android SDK 提供了在Android平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性  应用...

    Android中文文档

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一 些重要的应用程序。Beta版的 Android SDK 提供了在Android平台上使用JaVa 语言进行Android应用开发必须的工具和API接口。 特性 • 应用...

    amazon-project:通用 Amazon.com 搜索和抓取系统

    亚马逊产品抓取工具 注意:请阅读以获取图像,以及有关如何导航项目的更深入的分步说明。 这样做的目的是对 amazon.com 的所有产品库运行查询。 它提供了下拉框的管理界面。 这些盒子的标题/价值集是从 amazon....

    Lightshield:模块化的自动防暴API服务。 以自动化方式从api获取数据

    此工具提供了一个完全自动化的系统,可以将本地的防暴API永久镜像到本地。 它使用许多微服务将在不同进程之间对不同端点的请求拆分。 该设置适用于使用大量匹配数据而又不想设置自己的数据轮询的任务。 遮光罩...

    Lingualizer:支持诗歌详细分析的工具包

    的集合Django的Flask和SQLAlchemy数据模型以及基于Web的工具,用于将诗歌表示为高度详细且连贯的语言数据集。 更多信息: : ##要求 Lingualizer当前正在使用以下工具进行开发和测试: 的Python == 3.4.0 烧瓶...

    Android开发教程&笔记

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版的Android SDK 提供了在Android 平台上使用JaVa 语言进行Android 应用开发必须的工具和API 接口。特性 ; 应用...

    SQLBuilder:一个功能强大,快速,跨平台PHP SQL Builder。 通过流利的样式界面将结构化数据转换为SQL查询,并以所有主流数据库(MySQL,PostgreSQL,SQLite)为目标

    SQLBuilder不是ORM(对象关系映射)系统,而是一个可帮助您在PHP中生成跨平台SQL查询的工具集。 SQLBuilder是一个独立的库,您可以通过composer进行简单安装,也可以通过自动加载器仅要求它们(类文件),并且没有...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

Global site tag (gtag.js) - Google Analytics