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 */
发表评论
-
用户和文件权限管理(一)
2009-07-14 08:56 1500一、用户管理 Linux是一个多用户多任务的分时操 作 ... -
Flash 中文乱码
2009-06-30 21:39 0Flash 中文乱码 sudo gedit /etc/fon ... -
LINUX与主机WINDOWS文件共享如何实现
2009-06-11 13:40 0装个samba 一般来说,安 ... -
Ubuntu功夫秘籍246-新邮件提醒
2009-06-09 16:00 0文章原址:http://hi.baidu.com/cama ... -
p2p 软件端口
2009-06-01 13:18 0... -
Ext4,Ext3的特点和区别
2009-05-12 09:13 45200今天,有个后辈问我Ext4的优点,一下 ... -
SSH命令使用技巧
2009-05-07 17:49 0SSH命令使用技巧 参考网站:http://www. ... -
Dell Optiplex 320 Ubuntu Server 9.04 安装手册(本文暂不可用)
2009-05-06 22:31 2022前面我说过最近在忙个项目,这不前几天客户测试用的Win2003 ... -
ubuntu9.04 JDK,JRE 环境变量配置
2009-05-06 21:59 3101一、安装配置JAVA 1.6.03 $sudo apt-ge ... -
Dell Optiplex 320 Ubuntu DeskTop 9.04 SATA
2009-05-05 15:41 1636DEll Optiplex 320 无法安装光驱下安装ubu ... -
ubuntu 9.04 grub2
2009-05-05 11:52 1246GRUB (GRand Unified Bootloader) ... -
ubuntu 9.04 SourcesList 快速更新源
2009-05-05 09:45 2817我是2M带宽,用中科大的源加北交大的源,更新平均速度可 ... -
保存现有设置无痛安装Ubuntu 9.04
2009-04-29 09:28 823还有两天Ub ... -
我的UBUNTU9.04 安装列表
2009-04-17 15:56 0我的硬件: P4 双核3.2G 1.5G内存 ... -
ubuntu8.04下安装mplayer
2009-02-25 18:44 0THe first step :sudo apt-get in ... -
如何在 Ubuntu 中安装 Zabbix
2009-02-17 09:37 2299Zabbix (http: //www.zabbix.com ... -
Nagios 探索之九 —— NRPE的安装配置
2009-02-16 10:16 1723NRPE是n ... -
nagios 安装(linux)
2009-02-12 16:19 2503在ubuntu下配置nagios ,浪费了我两天的时间,就 ... -
linux常用命令和shell
2009-02-12 09:33 1077df :ubuntu 下查看分区信息 du:ubuntu ... -
Hibernate
2009-01-07 17:07 1475Hibernate是一个开放源代码的对象关系映射框架,它对JD ...
相关推荐
类别:工具箱 简报网址: 演示:[Demo]( ) API端点: 依存关系 RVM,Ruby,捆绑器 开发时使用Sqlite,生产时使用Postgresql ElasticSearch存储搜索元数据 设置Rails API 您需要克隆仓库,运行 bundle install ...
充分利用Android的特性 应用程序发布和分发的进阶话题 附录共7个部分 附录还包含了Android开发常用工具 调试桥和SQLite 的使用指南 《Android移动应用开发 第3版 卷Ⅱ:提高篇》不仅适合Android应用程序开发人员...
充分利用Android的特性 应用程序发布和分发的进阶话题 附录共7个部分 附录还包含了Android开发常用工具 调试桥和SQLite 的使用指南 《Android移动应用开发 第3版 卷Ⅱ:提高篇》不仅适合Android应用程序开发人员...
一个用于探索和发布数据的开源多功能工具 Datasette是用于浏览和发布数据的工具。 它可以帮助人们获取任何形状或大小的数据,并将其发布为交互式,可探索的网站和随附的API。 Datasette面向数据记者,博物馆策展人...
用于Plex库中IMDB评级的评级更新工具 通过IMDB,TMDB和TVDB代理为包含电影的Plex库更新IMDB评级的工具。...如果Plex数据库架构更改或IMDB停止提供公共评级数据集,则该工具理论上可能会失效! 这不会是危险的,因为当出
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的Android SDK 提供了在Android 平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 · 应用程序...
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的特点和优势 ...
+ Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且 提供了 Eclipse 的插件。 最底层的是一个 Linux Kernel,加载了几个移动设备必要的系统驱动(这么说来 Android...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的 Android SDK 提供了在Android平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 应用程序...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的Android SDK 提供了在Android 平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 · 应用程序...
大学生创业项目_垃圾短信过滤APP电信诈骗...后端使用scikit-learn模块(数据挖掘和数据分析工具),通过其朴素贝叶斯算法API对短信数据进行垃圾短信的识别: 导入中文垃圾短信数据集(80w数据 有垃圾短信和非垃圾短信)
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的 Android SDK 提供了在Android平台上使用JaVa语言进行Android应用开发必须的工具和API接口。 特性 应用...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一 些重要的应用程序。Beta版的 Android SDK 提供了在Android平台上使用JaVa 语言进行Android应用开发必须的工具和API接口。 特性 • 应用...
亚马逊产品抓取工具 注意:请阅读以获取图像,以及有关如何导航项目的更深入的分步说明。 这样做的目的是对 amazon.com 的所有产品库运行查询。 它提供了下拉框的管理界面。 这些盒子的标题/价值集是从 amazon....
此工具提供了一个完全自动化的系统,可以将本地的防暴API永久镜像到本地。 它使用许多微服务将在不同进程之间对不同端点的请求拆分。 该设置适用于使用大量匹配数据而又不想设置自己的数据轮询的任务。 遮光罩...
的集合Django的Flask和SQLAlchemy数据模型以及基于Web的工具,用于将诗歌表示为高度详细且连贯的语言数据集。 更多信息: : ##要求 Lingualizer当前正在使用以下工具进行开发和测试: 的Python == 3.4.0 烧瓶...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版的Android SDK 提供了在Android 平台上使用JaVa 语言进行Android 应用开发必须的工具和API 接口。特性 ; 应用...
SQLBuilder不是ORM(对象关系映射)系统,而是一个可帮助您在PHP中生成跨平台SQL查询的工具集。 SQLBuilder是一个独立的库,您可以通过composer进行简单安装,也可以通过自动加载器仅要求它们(类文件),并且没有...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...