基于嵌入式的数据库
- 基于嵌入式Linux的数据库主要有SQlite,Firebird,Berkeley DB,eXtremeDB
- Firebird是关系型数据库,功能强大,支持存储过程,SQL兼容等。
- SQlite关系型数据库体积小,支持ACID事务
SQLite基础
- SQLite的源码是C语言,源代码完全开源
- SQLite有以下特性
- 零配置,无需安装和管理配置
- 存储在单一磁盘文件中的一个完整的数据库
- 数据库文件可以在不同字节顺序的机器间自由共享
- 支持数据库大小至2TB
- 足够小,源码大致三万行C代码,250KB
- 比目前大多数据库对数据的操作更快
创建数据库
1.在线安装
sudo apt-get install sqlite3
2.SQlite3基本命令
- 1.系统命令
- 以 . 开头的命令
- .help帮助
- .quit退出
- .schema查看表结构
- .databases查看打开的数据库
- .table查看已有的表
- 以 . 开头的命令
- 2.sql命令
- 基本的sql命令不以 . 开头,但都要;结尾
- 创建一张数据库的表stu
- create table stu(id Integer,name char,score Integer);
- 插入一张记录
- insert into stu values(1001,‘zhangsan’,80);
- 插入部分字段记录
- insert into stu(name,score) values(1002,‘lisi’);
- 查询所有记录
- select *from stu
- 查询数据库部分内容字段
- select name,score from stu
- 根据属性查询
- select *from stu where score=80;
- select *from stu where score=80 and name=‘zhangsan’;
- 删除一条记录
- delete from stu where id=1003;
- delete from stu where score=‘90’;
- 更新一条记录
- update stu set name = ‘wangwu’ where id=1001;
- update stu set name = ‘wangwu’,score=88 where id=1001;
- 添加一列
- alter table stu add column address char;
- 删除一列
- 1.创建一张表
- 提取字段
- create table stu1 as select id,name,score from stu;
- 2.删除原有表
- drop table stu;
- 3.将新的表的名字改成原有的表名字
- alter table stu1 rename to stu;
- 1.创建一张表
- 创建一张数据库的表stu
API操作
sqlite3_open
int sqlite3_open(char *filename,salite3 **db);
- 打开sqlite数据库
- 参数:
- filename:数据库文件路径
- db:指向sqlite句柄的指针
- 返回值:成功返回0,失败返回错误码(非零值)
sqlite3_close
int sqlite3_close(sqlite3 *db);
- 关闭sqlite数据库
- 参数:
- db操作数据库的指针
- 返回值:
- 成功返回0,失败返回错误码
sqlite3_errmsg
const char *sqlite3_errmsg(sqlite3 *db);
- 通过db句柄得到数据库操作的错误信息
- 返回值:
- 返回错误信息首地址
sqlite3_exec
int sqlite3_exec(sqlite3 db,
const char *sql,
int (*callback)(void *,int,char*,char *8)
void *,
char **errmsg
);
-
执行一条sql语句
-
参数
- db:数据库操作句柄
- sql:一条sql语句
- callback:回调函数,只有sql为查询语句时才会执行此语句
- void *:给回调函数传递参数
- errmsg:错误信息
-
返回值:成功SQLITE_OK
-
int (*callback)()