sqlite3介绍

数据库:嵌入式数据库-》sqlite3

安装sqlite3数据库:
sudo apt-get install sqlite3*

操作数据库:
命令行:是以.开头的命令是sqlite3系统自带的命令
.exit :退出
.quit :退出
.help :查看sqlite3的帮助手册
.database :查看当前打开的数据库
.schema :查看表结构
.tables :查看当前打开的数据库的表集合

在启动sqlite3的时候,命令行后可以带有一个参数,是指定打开的数据库名称,若存在则打开,没有则创建
例如:
sqlite3 库名.db

sql命令,以;结束

创建一张表:
create table 表名
(
列名1 数据类型 primary key,
列名2 数据类型 not null,
........
);
删除表:
drop table 表名;

新增数据:
insert into 表名 values(值1,值2,值3);
insert into 表名(列名1,列名2..) values (值1,值2);

删除数据:
delete from 表名 where条件; //注意:在做数据删除的时候,必须加上where条件,否则就是全部删除
修改数据:
update 表名 set 列名 = 值 where条件; //注意:在做数据删除的时候,必须加上where条件,否则就是整个列的数据全部修改
查询数据:
select 列名 from 表名;//查询指定列的数据,如果列名处写*代表查询所有列的数据

以条件筛选的形式查找数据:
                                            select * from 表名
                                            where 列名 = 值;

sql中的逻辑运算:
                        and 与
                        or 或
                        not 非
查询空字段的数据条件:
                        select * from 表名 where 列名 is null;

id account password name gender age
1 a12345 a12345 张三 男 18

1.账号的注册
                    a12345
                    a12345
                    张三
                    男
                    18

2.账号的登录
                a12345
                a12345

 




C语言调用相关的API函数来进行数据库的操作


sqlite3中C语言开发接口函数:
头文件:<sqlite3.h>
编译时加上链接库:-lsqlite3

sqlite3_open(const char *pathname,sqlite3 **ppdb):打开一个数据库
返回值:成功返回SQLITE_OK,失败设置错误码,可以使用sqlite3_errmsg()
pathname:要打开数据库的路径
ppdb:成功打开的数据库用该类型指针接受

sqlite3_close(sqlite3 *db):关闭数据库,成功返回SQLITE_OK,失败设置错误码

char *sqlite3_errmsg(sqlite3 *db):通过db获取到错误信息的首地址

sqlite3_exec(sqlite3 *db,const char *sql,int (*callback)(void *,int,char **,char **),void *arg,char **errmsg):执行sql语句
参数:db,数据库指针
sql:一条sql语句
callback:回调函数,只有sql为查询的时候,才会执行此语句
arg:回调函数的参数
errmsg:错误消息
返回值:成功返回SQLITE_OK


int (*callback)(void *para,int f_num,char **f_value,char **f_name):回调函数功能,获取查询的结果,没成功找到一条记录就会执行一次该函数
para:传递给回调函数的参数
f_num:一行的列数
f_value:包含每个字段值的指针数组,数据
f_name:包含每个字段名称的指针数组,列名
返回值:成功返回0,失败返回-1 一定要填返回值否则报错



select * from studinfo

char **result = {"id","name","age","1","zhangsan","10","2","lisi","20"};

不使用回调函数查询数据库数据:
sqlite3_get_table(sqlite3 *db,const char *sql,char ***paxResult,int *pnRow,int *pnColumn,char **errmsg):
db:数据库
sql:查询语句
paxResult:需要一个二级指针的地址,查询的记录存放在该指针中
例如:
id name age
1 "zhangsan" 10
2 "lisi" 20
3 "wangwu" 30

paxResult[0] = "id"
paxResult[1] = "name"
paxResult[2] = "age"
paxResult[3] = "1"
paxResult[4] = "zhangsan"
paxResult[5] = "10"
pnRow:行数,以上例子该值为3
pnColumn:列数,以上例子该值为3

sql 减法
如果整张表的某个number字段都要减10,如下
update table set number字段= number字段- 10
如果只把number字段= 1000的减10,如下
update table set number字段= number字段- 10 where number字段= 1000;

update  goods set goodsnum=goodsnum-1 where sto_no=1 and goodsno=12

.schema 查看




sqlite time 
 
insert into (字段) values (time( 'now','localtime'))
例如:
insert into collect_env(envTime) values (time( 'now','localtime'))
sql 查询表的最后一条数据
 
select * from  collect_env order by id desc limit 0,1
联合查询:


插入数据:





  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值