码迷,mamicode.com
首页 > 其他好文 > 详细

嵌入式基础知识 2

时间:2016-04-06 22:55:45      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

sqlite数据库===>SQL

0、介绍


1、数据库的安装

1.1 拷贝压缩包 sqlite-autoconf-3080500.tar 到linux虚拟机中
1.2 解开压缩包 ===》 tar -zxvf sqlite-autoconf-3080500.tar.gz
1.3 进入到解开的目录 sqlite-autoconf-3080500 中,cd sqlite-autoconf-3080500
1.4 ./configure
1.5 make
1.6 suduo make install

验证是否安装成功: 在命令行输入 sqlite3 回车 出现sqlite>表示安装成功。
可以用 .q 退出数据库系统
如果屏幕出现 ....> 输入 ; 在输入 .q 退出

如果没有以上提示,或者出现两行很长的MD5值,意味着安装过程中版本异常
whereis sqlite3

cp ./sqlite3 /usr/bin/
cp ./sqlite3 /usr/sbin/

chmod 777 /usr/local/bin/sqlite3

之后再次验证是否能成功启动:在命令行输入 sqlite3 回车 出现sqlite>表示安装成功。
可以用 .q退出数据库系统


注意:数据库中的基本单位是表,可以在数据库中创建多个表,每个表可以单独在,也可以互相之间有关联。

每个表的基本单位是行和列
数据库的设计三范式:
第一范式: 所有的列唯一
第二范式: 所欲的行唯一
第三范式: 数据内容的无冗余

 

2、数据库的常规使用 ====>所有的sqlite数据库管理命令都是以: . 开始

常规数据库管理命令;===》只针对sqlite数据库有效。

2.0 首先在启动数据库系统过程中创建数据库
===》sqlite3 xxx.db ===>表示手工创建一个名称为xxx.db的数据库

2.1 .help 来查看当前系统支持的所有管理命令
2.2 .quit = .q 表示退出当前系统
2.3 .database 显示当前打开的数据库文件
2.4 .tables 显示数据库中所有的表名====》如果没有任何记录表示数据库中无表
2.5 .schema xxx 显示当前数据库中xxx表的表结构

常规的数据库操作命令:====》使用SQL 语言操作,兼容所有支持SQL语言的数据库
注意:所有的该部分的操作都必须以 ; 结尾,否则程序会继续等待输入知道出现 ;

0、创建一个数据库 ===》touch test.db ===》创建一个数据库文件
====》sqlite3 test.db ===》创建的同时打开数据库

 

注意:所有的sql语句都支持 -- 开头的注释,表示一行无效
/* */ 表示多行注释,类似C 语言

1、创建表
create table xxx (f1 types, f2 type2,....);
eg: create table test (id int, name txt,class int);
其中:列字段的类型有如下几种:
int 整形 txt 字符串 blob 二进制类型 real 数字

2、删除表:
drop table xxx;

3、增加记录
insert into xxx (f1,f2....) values (v1,v2,v3...);
eg: insert into test (id,name) values (1,"abc");

insert into xxx values(v1,v2...);
eg:insert into test values (2,"def",3);


4、删除记录
delete from xxx ;=====》删除xxx表中所有数据。
delete from xxx where id = x; ====>根据id的值来指定删除
delete from xxx where id = x and name = "zhang";

5、查询记录
select * from xxx; ====>查询xxx表中所有数据
select id from xxx; ===>只查询xxx表中的id列数据
select id,name from xxx; ===>查询xxx表中指定的id和name列数据。


6、改变记录 = 删除记录+增加记录


练习:要求 手工创建一个数据库,并设计一个独立的用户表t_user,该表的字段必须包含 id,name,age

依次插入5个不同身份的用户到表中,并用selelct查询显示。

删除其中id为 奇数的记录,并最后显示其他剩余的用户信息。

可视化的工具


批量导入导出

导入: sqlite3 test.db < test.sql
导出: sqlite3 test.db .dump > test2.sql

 

3、数据库编程接口

头文件:sqlite3.h
编译过程: -lsqlite3


打开数据库 ====》操作数据库(查询动作,插入删除动作) =====》关闭数据库


3.1 打开数据库
int sqlite3_open(char * path, sqlite3 **db)
功能:打开指定的path路径下的数据库
参数:path 数据库文件所在的路径+文件名
db 数据库类型指针,打开之后与该数据库关联
返回值:成功0
失败 非0

3.2 关闭数据库
int sqlite3_close(sqltie3 *db);
参数: db 要关闭的数据库指针
返回值:成功 0 失败 非0


3.3 操作数据库

查询动作: sqlite3_get_table()
int sqltie3_get_table(sqlite3 *db ,const char *sql,char ***rest,
int * row, int * col,char **errmsg);
功能:通过以上函数可以从指定的db数据库中根据sql所表示的sql语句执行。
并将结果rest返回,row表示最终查询的结果行数,col表示最终查询
的结果列,errmsg 如果错误则存储错误信息。

参数:db 要查询的数据库
sql 要执行的查询sql语句,一般用select开始
rest 返回的结果集指针
row 返回的结果中的行数
col 返回的结果中的列数
errmsg 存储错误信息
返回值:成功 0
失败 错误码



修改动作: sqlite3_exec()
int sqlite3_exec(sqlite3 *db,const char *sql,slqite3_callback callback,
void *arg, char ** errmsg);
功能:该函数可以执行任何针对数据库操作的sql语句。
参数: db 要操作的数据库指针
sql 要执行的sql语句 ===》注意:如果该语句是select 查询语句则callback有效
如果该语句是insert 或者delete则callback可以不用。
callback 回调函数
arg 回调函数的 参数
errmsg 存储错误信息

返回值:成功 0
失败 非0


回调函数:typedef int (*sqlite3_callback)(void * arg,int n,char **f_value,char **f_name);
功能:当该函数被调用的时候表示有数据执行结果返回并存储到f_value和f_name中。
参数:arg 从外部传入的参数
n 查询结果中包含的列的个数
f_value 行的值
f_name 列的值

返回值:成功 0
失败 -1

 

练习:手工创建一个数据库并设计一个t_user 表。
用代码方式插入5 条记录
并最后的所有信息打印输出到终端。

 

嵌入式基础知识 2

标签:

原文地址:http://www.cnblogs.com/ChuckYin/p/5361277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!