嵌入式数据库 SQLite 浅析

2019-07-12 23:07发布

        SQLite是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。        嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用于嵌入式设备。你需要做的仅仅是把它正确的编译到你的程序。
下面将介绍SQLite的使用: 一、创建SQLite数据库 1、手工创建       使用sqlite3 工具,通过手工输入SQL命令完成数据库创建,用户在Linux 的命令行界面中输入 sqlite3 可启动 sqlite3工具。 2、代码创建        在代码中动态创建数据库。         在程序执行过程中,当需要进行数据库操作时,应用程序会首先尝试打开数据库,此时如果数据库并不存在,程序会自动建立数据库,然后打开数据库。
二、SQLite常用命令介绍 1、sqlite3 指令(通常以 . 开头) 1)创建或打开一个数据库文件        在终端下运行 sqlite3 < *.db > 指令:
<*.db> 是要打开的数据库文件。若该文件不存在,则自动创建。
2)显示当前打开的数据库文件 sqlite > .database
可以看到当前打开的数据库文件正是刚刚建立的 message.db文件;
3)显示数据库中所有表名 sqlite > .tables

可以看到当前用户下有一个名为 user 的表;
4)查看表的结构 sqlite > .schema

其实这里显示的正是我们创建新表时输入的命令;
5)显示所有命令 sqlite > .help


6) 退出 sqlite3 sqlite > .quit


2、SQL命令        每个命令以 ;结束 1)创建新表       sqlite > create table (f1 type1, f2 type2,...);
type为数据类型: NULL INTEGER REAL TEXT BLOB 注意:若未指定类型,默认是字符串,向表中添加新纪录时要加 “”;
2)删除表  sqlite > drop table ;

可以看到原来有两个表 user与user2 ,使用 drop  table user2 后可以看到 只剩下 user;
3)查询表中所有记录  sqlite >select * from ;


4) 按指定条件查询表中记录 sqlite >select * from where ;

这里的条件是 id < 2 ,可以看到 id < 3 的数据被挑选出来;
5)向表中添加新纪录 sqlite >insert into values(value1,value2,...);

可以看到最新的记录被添加进去;
6)按指定的条件删除表中记录 sqlite >delete from where ;

可以看到 passwd=1 的被删除;
7) 更新表中记录 sqlite > updata set ,... where ;
可以看到 id=3 的数据被更新。再次提醒,未定义类型的记录默认是字符串,添加时一定要用“” ;
8)在表中添加字段 sqlite > alter table add column defalut... ;

可以看到 age 被添加进去;
三、SQLite 编程接口 1、打开sqlite 数据库 sqlite3_open 函数原型: int sqlite3_open(const char *fileName, sqlite3 **ppDB); 函数功能:打开一个数据库;若该数据库文件不存在,则自动创建。打开或者创建数据库的命令会被缓存,直到这个数据库真正被调用的时候才会被执行。  输入参数:fileName,待打开的数据库文件名称,包括路径,以’