在C/C++中使用SQLite
廖卫东
C/C++接口
SQLite3.0依据以下需求而创建:
支持UTF-16。
用户可定义的文本排序。
以索引列的形式存储BLOB。
SQLite3.0的API包括了83个独立的函数。简单的程序可以通过三个函数工作:sqlite3_open()、sqlite3_exec()和
sqlite3_close()。
更多的数据库引擎运行控制可以用sqlite3_prepare()来编译一个SQLite语句成字节代码并通过sqlite3_step()来执行它。
一个用sqlite3_column_开头的命令序列可以用来提取关于查询结果的信息。许多接口函数是以UTF-8和UTF-16的形式成对出现的。并且有一个用于实现用户定义SQL函数和用户定义的text比较。
打开与关闭一个数据库
typedef struct sqlite3 sqlite3;
int sqlite3_open(const char*, sqlite3**);
int sqlite3_open16(const void*, sqlite3**);
int sqlite3_close(sqlite3*);
sqlite3_open()程序返回一个整型错误代码,而不是像sqlite2做的那样返回一个指向sqlite3结构。sqlite3_open()与
sqlite3_open16()间的区别是sqlite3_open16()采用UTF-16(以本地字节顺序)作为数据库文件名。如果一个新数据库文件需要被创建,那么sqlite3_open16()设置本地的文本表达式为UTF-16而sqlite3_open()设置文本表达式为UTF-8。
const char *sqlite3_errmsg(sqlite3*);
const void *sqlite3_errmsg16(sqlite3*);
int sqlite3_errcode(sqlite3*);
sqlite3_errcode()指令返回一个最近的主API调用的结果代码。sqlite3_errmsg()返回一个最近错误的
英文信息。错误码信息可能是暂时的-它可能在
接下来的任何SQLite函数调用时消失。
sqlite3_errmsg16()象sqlite3_errsmg()一样工作,除了它以本地字节顺序返回一个UTF-16错误信息。
SQLite 3 的错误代码
#define SQLITE_OK 0 /* 成功的结果*/
#define SQLITE_ERROR 1 /* SQL 错误或没有数据库*/
#define SQLITE_INTERNAL 2 /* 一个SQLite内部的逻辑错误*/
#define SQLITE_PERM 3 /* 存取许可被拒绝*/
#define SQLITE_ABORT 4 /* 需要一个中断的Callback指令*/
#define SQLITE_BUSY 5 /* 数据据库文件被锁定*/
#define SQLITE_LOCKED 6 /* 数据库中的一个表被锁定*/
#define SQLITE_NOMEM 7 /* malloc()失败*/
#define SQLITE_READONLY 8 /* 试图写一个只读的数据库*/
column函数的使用#define SQLITE_INTERRUPT 9 /* 操作被sqlite_interrupt()结束*/
#define SQLITE_IOERR 10 /* 某种磁盘I/O错误发生*/
#define SQLITE_CORRUPT 11 /* 数据库磁盘镜像异常*/
#define SQLITE_NOTFOUND 12 /* (Internal Only) 表或记录不存在*/
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论