赞
踩
typedef struct sqlite3 sqlite3;
每一个SQLite数据库都是通过一个指向不透明的名为“sqlite3”的结构体指针来代表的,我们可以将sqlite3看作是一个指针,函数 sqlite3_open(), sqlite3_open16()和sqlite3_open_v2()作为构造函数的接口,函数sqlite3_close(), sqlite3_close_v2()作为析构函数的接口,同时也有很多的其他的接口,但是主要的就是这几个函数。
int sqlite2_open( const char *filename, //UTF-8类型的数据库名称 sqlite3 **ppDb //数据库操作的句柄 ); int sqlite3_open16( const void *filename, //UTF-8类型的数据库名称 sqlite3 **ppDb //数据可以的操操作句柄 ); int sqlite3_open_v2( const char *filename, //UTF-8类型的数据库名称 sqlite3 **ppDb, //数据库的操作句柄 int flags, //标志位 const char *zVfs //所使用的的VFS模型的名字 );
使用这种方式打开一个数据库是将一个文件名作为数据库名称,这个文件名如果是UTF-8编码的话,就是用sqlite3_open()和sqlite_open_v2()函数,如果是UTF-16的话,就是用sqlite3_open16()函数,数据的连接通常是使用 ppDb的方式返回,即使出现了一个错误,唯一的期望是如果SQlite未能给sqlite3对象分配一个空间,空指针将会代替ppDb作为返回值,如果数据库正常的打开,将会返回SQLITE_OK,否则就返回一个故障码
error_code,函数sqlite3_errmsg()和sqlite3_errmsg()可以将返回的故障代码转化成英语
默认的数据库的编码格式是UTF-8d的,而且是由函数sqlite3_open()和函数sqlite3_open_v2()创建的,sqlite3_open16()是使用UTF-16编码的
如果数据库是否被成功的打开,数据库的连接必须使用函数sqlite3_close()来关闭连接
函数sqlite3_open_v2()的接口可slqite3_open()的接口是很相似的,只不过断了2个附加的参数,函数sqlite3_open_v2()的标志位将使用下面的几个值,可以在SQLITE_OPEN_NOMUTEX(不带互斥),
SQLITE_OPEN_FULLMUTEX(使用全部互斥),SQLITE_OPEN_SHARECACHE(共享缓存),SQLITE_OPEN_PRIVATECACHE(私有缓存),或者使用SQLITE_OPEN_URI标志位
如果函数sqlite3_open_v2()的第三个参数不是上面定义的几个选项的参数,则后果是不会预估的
如果 SQLITE_OPEN_NOMUTEX 标志位设置以后,然后,只要在编译时或启动时没有设置单线程模式,数据库连接就会以多线程模式打开。如果选择了 SQLITE_OPEN_FULLMUTEX 标志位,除非在编译或者运行阶段设置了单线程模式,则数据库将会以序列的方式来创建,SQLITE_OPEN_SHARECACHE 将会使数据库使用共享缓存模式,不管数据库是否使用了共享缓冲模式,标志位 SQLITE_OPEN_PRIVATECACHE 将会是数据库的连接不在共享缓存模式
函数sqlite3_open_v2()的第四个参数是
sqlite3_vfs,它定义了新数据库连接的时候所使用的操作系统的接口,如果是NULL,则将会使用默认的sqlite3_vfs对象
如果文件名是":memory:",然后一个私有的,内部储存的数据库将会为了这个连接而创建,如果数据库连接成功,这个临时的内部存储数据库将会凶案是,后面开发的SQLIte版本将会使用附件的特殊文件名,它以":“开头,建议如果数据库不是以“:”开头的话,应该在文件名的开头加一个比如”./"的前缀
如果文件名是一个孔子字符串,临时的在磁盘的数据库将会穿件,这个私有的数据库将会在数据库断开连接后自动的删除
如果URI文件名的解析功能使能以后,并且文件名的解析从"file:"开始,这个文件名将会作为一个URI来解析,如果SQLITE_OPEN_URI标志位在函数sqlite3_open_v2()中给定,或者在函数sqlite3_config()中使用SQLITE_CONFIG_URI标志位使能了全局URI文件名解析,则URI文件名解析将会使能,URI文件名解析默认情况下是关闭的,但是后面开发的新版的数据库可能会默认情况下使能URI文件名解析。
URI文件名是根据RFC 3986解析的,如果URI中包含一个文件的所有权者,它就不能是空的字符串或是字符串“localhost”,如果所属人不是空或者不是字符串“localhost”,将会报故障,判断构成了URI,如果出现了,就会忽视
SQLite使用路径来构成URI的名称,这个路径在硬盘中将会包含数据库,如果路径是由’/‘开始的,他将会季锡成一个绝对路径,如果不是以’/'开头,将会解析成一个相对路径,在Window中,第一个名字是绝对的cup按路径
疑问组成的URI解析将会包含SQLite自己,或者通过一个定制的VFS解析,SQLite和内部的的VFSes解析警徽遵循以下参数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。