Sqlite数据库
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
Sqlite是一种微型的数据库占内存小一般适用于嵌入式设备中
文章目录
- 系统命令
- sql命令
- sqliteAPI的使用
一、系统命令
sqlitt系统命令是用' . '开头而sql命令是用' ; '结尾
例
.help 帮助
.quit 退出
.exit 退出
.schema 查看表的结构
.table 查看数据库所有的表
二、Sql命令
sqlitez主要就是用于存放数据,对表进行增删改查,数据库是所有数据的集合,可以创建多张表
1.创建表
create table 表名(字段); 字段是以变量在前,数据类型在后
2.插入内容
insert into 表名 values(内容); 这是插入所有内容
insert into 表名 (name,id) values(内容); 插入部分内容
3.查询表
select * from 表名; 查看表的所有内容
select name,id from 表名; 查看部分内容只有name和id的
select * from 表名 where id = 1 and name = "李建华"; 按条件查询
select * from 表名 where id = 1 or name = "李建华";
3.删除内容
delete from 表名; 删除整张表的内容
delete from 表名 where id = 1 按条件删除内容
4.更改内容
update 表名 set name="李万海" where id = 1; 将id=1的那条内容的名字更改成设置的名字
5.插入表的一列
alter table 表名 add column 新的字段
6.删除表的一列(sqlite不支持删除一列我们先创建一张表在删除原有的表在把新的表改回原有的名字)
create table 表名 as select id,name,score from 之前的表名 创建一张新表并继承旧表的一些字段
drop table 表名; 删除整张表
alter table 表名 rename to 旧表名; 改表名
二、sqliteAPI的使用
1.打开数据库
sqlite3_open( const char *filename,sqlite3 **ppDb );
参数1打开数据库的路径
参数2数据库的句柄
2.关闭数据库
sqlite3_close((sqlite3*db);
3.使用Sql语句
sqlite3_exec(sqlite3*db,const char *sql, int (*sqlite3_callback)(void*, int,char**, char**),void *argc,char **errmsg);
参数1数据库句柄
参数2sql语句
参数3函数指针---回调函数(一个函数作为另一个函数的参数)
参数4给回调函数传参
参数5错误信息
sudo apt-get install libsqlite3-dev
因为sqlite3属于第三方库所以要在线下载第三方库编译的时候指定头文件
#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
#define SQLITE "./data.db"
int addData(sqlite3 * db);
int selectData(sqlite3 * db);
int updateData(sqlite3 * db);
int deleteData(sqlite3 * db);
int handler(void *para,int num,char **values,char ** name );
int main()
{
sqlite3 * db;
int a;
//1.打开数据库 没有自己创建
if(sqlite3_open(SQLITE,&db) != SQLITE_OK )
{
printf("%s",sqlite3_errmsg(db));
}
else
printf("数据库打开成功\n");
//2.没有表创建表
if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer)",NULL,NULL,NULL) != SQLITE_OK)
{
printf("%s\n",sqlite3_errmsg(db));
}
else
printf("表创建成功\n");
//3.实现增删改查
while(1)
{
printf("/-----------------------------------------------------------------------/\n");
printf("/-----------------------------------------------------------------------/\n");
printf("/------1.添加数据---2.查询数据----3.改动数据---4.删除数据---5.退出数据库/\n");
printf("/-----------------------------------------------------------------------/\n");
printf("/-----------------------------------------------------------------------/\n");
printf("请输入您要执行的内容:");
scanf("%d",&a);
switch(a)
{
case 1:
addData(db);
break;
case 2:
selectData(db);
break;
case 3:
updateData(db);
break;
case 4:
deleteData(db);
break;
case 5:
sqlite3_close(db);
exit(0);
break;
default:
printf("您输入的参数有误!");
break;
}
}
}
int addData(sqlite3 * db)
{
int id;
float score;
char name[64] = {'\0'};
char buf[256] = {'\0'};
printf("请输入您的学号:");
scanf("%d",&id);
getchar();
printf("请输入您的姓名:");
gets(name);
printf("请输入您的成绩:");
scanf("%f",&score);
sprintf(buf,"insert into stu values(%d,'%s',%f)",id,name,score);
if(sqlite3_exec(db,buf,NULL,NULL,NULL)!= SQLITE_OK)
{
printf("%s\n",sqlite3_errmsg(db));
}
else
printf("数据添加成功!\n");
}
int selectData(sqlite3 * db)
{
if(sqlite3_exec(db,"select * from stu",handler,NULL,NULL) != SQLITE_OK)
{
printf("%s\n",sqlite3_errmsg(db));
}
else
printf("已经打开所有数据\n");
}
int updateData(sqlite3 * db)
{
int id;
float score;
char name[128]={'\0'};
char buf[256] = {'\0'};
printf("请输入您要更改的ID:");
scanf("%d",&id);
getchar();
printf("请重新输入你的姓名:");
scanf("%s",name);
printf("请重新输入你的成绩:");
scanf("%f",&score);
sprintf(buf,"update stu set name='%s',score=%f where id = %d",name,score,id);
if(sqlite3_exec(db,buf,NULL,NULL,NULL) != SQLITE_OK)
{
printf("%s\n",sqlite3_errmsg(db));
}
else
printf("内容更改完毕\n");
}
int deleteData(sqlite3 * db)
{
int id;
char buf[256] = {'\0'};
printf("请输入您要删除的ID:");
scanf("%d",&id);
sprintf(buf,"delete from stu where id = %d",id);
if(sqlite3_exec(db,buf,NULL,NULL,NULL)!= SQLITE_OK)
{
printf("%s\n",sqlite3_errmsg(db));
}
else
printf("id=%d的内容已删除\n",id);
}
int handler(void *para,int num,char **values,char ** name )
{
int i = 0;
for(i=0; i<num;++i)
{
printf("%-6s ",values[i]);
}
puts("");
return 0;
}