SQLite是一款轻型的本地文件数据库,是遵守ACID的关联式数据库管理系统。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它的功能强、速度快,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合。 一、SQLite的数据类型 在进行数据库操作之前,有个问题需要说明,就是SQLite的数据类型,和其他的数据库不同,Sqlite支持的数据类型有他自己的特色:Typelessness(无类型)。 SQLite是无类型的,这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么。 而大多数的数据库在数据类型上都有严格的限制,在建立表的时候,每一列都必须制定一个数据类型,只有符合该数据类型的数据可以被保存在这一列当中。而在SQLite 2.X中,数据类型这个属性只属于数据本生,而不和数据被存在哪一列有关,也就是说数据的类型并不受数据列限制(有一个例外:INTEGER PRIMARY KEY,该列只能存整型数据)。 但是当SQLite进入到3.0版本的时候,这个问题似乎又有了新的答案,SQLite的开发者开始限制这种无类型的使用,在3.0版本当中,每一列开始拥有自己的类型,并且在数据存入该列的时候,数据库会试图把数据的类型向该类型转换,然后以转换之后的类型存储。当然,如果转换被认为是不可行的,SQLite仍然会存储这个数据,就像他的前任版本一样。 举个例子,如果你企图向一个INTEGER类型的列中插入一个字符串,SQLite会检查这个字符串是否有整型数据的特征, 如果有而且可以被数据库所识别,那么该字符串会被转换成整型再保存,如果不行,则还是作为字符串存储。 1.NULL,值是NULL SQLite的操作接口 SQLite的2个重要结构体: sqlite3 *pdb,数据库句柄,跟文件句柄FILE很类似 SQLite的5个主要的函数: sqlite3_open(), 打开数据库 还有一系列的函数,用于从记录集字段中获取数据,如: sqlite3_column_text(),取text类型的数据 C++使用前准备 下载SQLite,分别从http://www./2013/sqlite-amalgamation-3071700.zip、 http://www./2013/sqlite-dll-win32-x86-3071700.zip下载SQLite的源文件和库文件。 但是sqlite-dll-win32-x86-3071700.zip中并没有提供SQLite的lib文件,需要自己编译生成。解压sqlite-dll-win32-x86-3071700.zip到sqlite-dll-win32-x86-3071700目录,再将VS安装目录下VC中的LIB.EXE、LINK.EXE、mspdb80.dll(这里用的是VS2008)拷贝到sqlite-dll-win32-x86-3071700,执行LIB.EXE /DEF:SQLITE3.DEF /MACHINE:IX86 就可以得到SQLITE3.LIB文件。 C++访问SQLite C++对SQLite进行操作的代码如下: 复制代码 代码如下: #include "stdafx.h" #include <string.h> using namespace std; #include "sqlite3.h" static int SelectCallback(void *notUsed, int argc, char **argv, char **azColName) int _tmain(int argc, _TCHAR* argv[]) // 打开SQLite数据库 // 创建表 // 插入数据 res = sqlite3_exec(pDB, sql,0,0, &errMsg); // 查询数据 // 关闭数据库 return 0; |
|
来自: laiyangpair > 《VS》