打开数据库:
在执行SQL数据库之前,首先要连接数据库(也可以称为打开数据库,因为SQlite数据库包含在单个操作系统文件中,一个文件对应一个数据库)。
可以使用sqlite3_open(),sqlite3_open_v2(),sqlite3Z_open16()函数打开数据库,这些函数的声明如下:
int sqlite3_open(
const char *filename,//数据库文件名 UTF-8
sqlite3 **ppDb //OUT:SQlite数据库句柄
);
int sqlite3_open_v2(
const char *filename, //数据库文件名 UTF-8
sqlite3 **ppDb, //out:数据库句柄
int flags, //标志
const char *zVfs //要使用的VFS模块的名称
);
int sqlite3_open16(
const void *filename, //数据库文件名 (UTF-16)
sqlite3 **ppDb //OUT:SQLite数据库句柄
);
一般情况下,推荐使用sqlite3_open_v2()这个函数,因为这是SQlite中最新和最强大的打开数据库的函数。与旧的sqlite3_open()相比,它有更多的选项,具有更强的能力。
不管选择哪个打开数据库函数,他们有共同的参数:filename与ppDb
参数filename:可以是操作系统文件,也可以是文本字符串":memory:",或者为空字符串,或空指针。
如果使用":memory:",sqlite3_open_v2()将在内存中创建数据库,该数据库值存在于链接生存期间
如果文件名为空字符串或者null,sqlite3_open_v2()将打开临时磁盘文件,并在链接关闭时自动删除该文件。
如果是其他选项(操作系统文件),函数将尝试打开通过参数值指定的数据库文件,如果数据库文件不存在,sqlite3_open_v2()函数将根据flags参数决定是否创建数据库还是返回数据库不存在的错误信息,而其他函数则创建数据库。
参数*ppDb:Sqlite数据库句柄
参数flags:包括以下比特向量:
SQLITE_OPEN_READONLY:以只读模式打开数据库(数据库已存在,否则返回错误)
SQLITE_OPEN_READWRITE:以读写模式打开数据(数据库已存在,否则返回错误)
SQLITE_OPEN_CREATE:当数据库已存在,将其打开,当数据库不存在,则会创建
参数flags也会结合SQLITE_OPEN_NOMUTEX、SQLITE_OPEN_FULLMUTE、SQLITE_OPEN_SHAREDCACHE、SQLITE_OPEN_PRIVATECACHE标志,以进一步控制数据库句柄的事务行为。
参数*zFvs:允许调用去重写默认的操作系统接口sqlite3_vfs方法。
关闭数据库:
使用sqlite3_close()函数可以关闭数据库,函数声明如下:
int sqlite3_close(sqlite3*)
要成功执行sqlite3_close()函数,必须完成于连接关联的所有准备查询。只要有一个查询仍未完成,sqlite3_close()都会返回一个SQLITE_BUSY兵显示错误信息"由于有未完成的语句,所以无法关闭连接"
【注意:使用sqlite3_close()关闭连接时,如果连接上有打开的事务,该事务将自动回滚。】