SQLite
1.SQLite的优点
SQLite是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。
嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用于嵌入式设备。你需要做的仅仅是把它正确的编译到你的程序。
2.常用命令介绍
2.1.sqlite3 指令(通常以 . 开头)
2.1.1创建或打开一个数据库文件
在终端下运行 sqlite3 name.db 指令,<name.db> 是要打开的数据库文件。若该文件不存在,则自动创建。name为数据库名称。
由于其他的命令在创建之后便比较简单,这里就不一一举例,大概有下列命令;
- 显示当前打开的数据库文件:sqlite > .database。
- 显示数据库中所有表名:sqlite > .tables。
- 查看表的结构:sqlite > .schema <table_name>。
- 显示所有命令:sqlite > .help。
- 退出 sqlite3:sqlite > .quit。
2.2SQL命令(每个命令以 ;结束)
2.2.1.创建新表
sqlite > create table <table_name> (f1 type1, f2 type2,...);
type为数据类型:NULL,INTEGER,REAL,TEXT,BLOB
注意:若未指定类型,默认是字符串,向表中添加新纪录时要加 “”;
2.2.2.删除表
sqlite > drop table <table_name>;
从上图可以看到,我又重新创建了一个表user3,执行删除命令后,就只有usr2表了。
后面更多的命令使用方法和上面两个相同,我就不一一举例了:
- 查询表中所有记录
sqlite >select * from <table_name>;
- 按指定条件查询表中记录
sqlite >select * from <table_name> where <expression>;
- 向表中添加新纪录
sqlite >insert into <table_name> values(value1,value2,...);
- 按指定的条件删除表中记录
sqlite >delete from <table_name> where <expression>;
- 更新表中记录
sqlite > updata <table_name> set <f1=value1>,<f2=value2>... where <expression>;
- 在表中添加字段
sqlite > alter table <table> add column <field><type> defalut... ;
3.SQLite编程函数
3.1sqlite3_open()
函数原型:
int sqlite3_open(const char *fileName, sqlite3 **ppDB);
函数功能:打开一个数据库;若该数据库文件不存在,则自动创建。打开或者创建数据库的命令会被缓存,直到这个数据库真正被调用的时候才会被执行。
输入参数:fileName,待打开的数据库文件名称,包括路径,以’\0’结尾;特别说明:SQLite支持内存数据库,内存方式存储使用文件名“:memory:”
输出参数:ppDB,返回打开的数据库句柄;
返回值:执行成功返回SQLITE_OK,否则返回其他值;
3.2sqlite3_close()
函数原型:
int sqlite3_close(sqlite3 *pDB);
函数功能:关闭一个打开的数据库;
输入参数:pDB,打开的数据库句柄;
输出参数:无
返回值:执行成功返回SQLITE_OK,否则返回其他值;
3.3sqlite3_errmsg()
函数原型:
const char *sqlite3_errmsg(sqlite3 *pDB);
函数功能:获取最近调用的API接口返回的错误说明,这些错误信息UTF-8的编码返回,并且在下一次调用任何SQLiteAPI函数时被自动清除;
输入参数:pDB,打开的数据库句柄
输出参数:无
返回值:错误说明的字符串指针
3.4sqlite3_exec()
函数原型:
int sqlite3_exec(sqlite3 *pDB,constchar *sql, sqlite_callback callback,void *para,char **errMsg);
函数功能:编译和执行零个或多个SQL语句,查询的结果返回给回调函数callback。
输入参数:pDB,数据库句柄;sql,待执行的SQL语句字符串,以’\0’结尾;callback,回调函数,用来处理查询结果,如果不需要回调(比如做insert或者delete操作时),可输入NULL;para,用户传入的参数,可以为NULL,该参数指针最终会被传给回调函数callback,供用户在回调函数中使用;
输出参数:errMsg,返回错误信息,注意是指针的指针。
返回值:执行成功返回SQLITE_OK,否则返回其他值。