1>本地安装
1>找到sqlite3数据库的软件包
sqlite-autoconf-3240000.tar.gz
2>将sqlite3软件包移动到ubuntu的 家目录中 ~
mv sqlite-autoconf-3240000.tar.gz ~
3>在家目录下解压该软件包
sudo tar -xvf sqlite-autoconf-3240000.tar.gz
4>解压后获得同名文件夹,然后cd进去
cd sqlite-autoconf-3240000
5>执行命令
sudo ./configure
6>执行命令:执行该命令,会陷入卡顿,不要动他,任他卡
直到出现命令行为止
sudo make
7>执行命令
sudo make install
8>测试
farsight@ubuntu:~$ sqlite3 1.db
SQLite version 3.24.0 2018-06-04 19:24:41
Enter “.help” for usage hints.
sqlite>
命令操作:
.databases 列出数据库文件名
.tables ?PATTERN?列出?PATTERN?匹配的表名—-!
.import FILE TABLE 将文件中的数据导入的文件中—-!
.dump ?TABLE? 生成形成数据库表的SQL脚本
.output FILENAME将输出导入到指定的文件中 —-!
.output stdout 将输出打印到屏幕 —-!
.mode MODE ?TABLE? 设置数据输出模式(csv,html,tcl…
.nullvalue STRING 用指定的串代替输出的NULL串
.read FILENAME执行指定文件中的SQL语句 —-!
.schema ?TABLE? 打印创建数据库表的SQL语句—-!
.separator STRING用指定的字符串代替字段分隔符
.show打印所有SQLite环境变量的设置
.quit退出命令行接口 ——–!
有些操作是需要有 表 才可以实现
什么是表?
SQL语句操作:
———-!!!!!!!
增删改查
表:增删改查
1>增: 建立表
普通建立 :
原型:create table 表名(列名 类型,列名 类型);
实例:create table xx(id int,name char[20]);
产生疑问?
C语言: 类型在前,变量名在后
sqlite3:变量名在前,类型在后
避免重复建立法:
原型:create table if not exists 表名(列名 类型,列名 类型);
实例:create table if not exists xx(id int,name char[20],passwd char[20]);
create table if not exists yy(id int,name char[20],passwd char[20]);
2>删:删除表
删除表格:
原型: drop table 表名;
实例: drop table yy;
3>改表:
增加列:新增字段
原型:alter table 表名 add column 列名 类型;
实例:alter table xx add column passwd char[20];
4>查找表:
命令:.table (表名)
第一种用法:查看当前数据库中所有的表格
:.table
第二种用法:查看当前数据库中拥有的某个表格
:.table 表名
.table xx
数据:增删改查
1>往表格里面添加数据:
原型:insert into 表名 values(每一列的值);PS:有多少列,就需要赋满值,不可以少列
实例:insert into xx values(1,”wuyanzu”,”123456″);
insert into xx values(2,”tonly”,”123″);
insert into xx values(3,”Ikun”,”1234″);
2>删除数据:
原型:delete from 表名 where 条件;
实例:delete from xx where name==”Ikun”;
3>修改数据:
原型:update 表名 set 列=值,列=值 where 条件;
实例:update xx set passwd=”12345″,name=”wuyifan” where name==”tonly”;
4>查询数据:
原型: select 列名 from 表 where 条件;
例子:
查询该表中所有的数据:select * from xx;
查询该表中id为2的数据:select * from xx where id==2;
查询该表中passwd为”1234″的数据:select * from xx where passwd==”1234″;
sqlite3数据库的函数操作:
————!!!!!!!!
数据库的函数来自第三方:所以在编译时需要加上 -lsqlite3
1>创建或打开数据库 sqlite3.h +3291
sqlite3_open
sqlite3_open—–打开数据库
SQLITE_API int sqlite3_open(
const char *filename,/* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:
打开数据库
参数:
filename:数据库库名
ppDb :句柄,用来表示数据库—-类似文件描述符
返回值:
成功返回SQLITE_OK
2>在代码中执行sql语句
SQLITE_API int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql,/* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *,/* 1st argument to callback */
char **errmsg /* Error msg written here */
);
功能:
执行sql语句
参数:
1>sqlite3*: 句柄
2>sql:保存sql语句的地方
3>回调函数:sql返回的东西
4>void *:给第三个参数传入的参
5>errmsg:错误信息获取的地方
返回值:
成功返回SQLITE_OK
回调函数:very f**king 重要 >>!!!!!!!!!!!!!!!!!!!!!!
int (*callback)(void*,int,char**,char**),
解释:
void *:sqlite3_exec传入的参
int:列的个数
char**:数据保存的地方 [0] [1]
char**:列名保存的地方 [0] [1]
回调函数的作用:获取 sql语句在数据库中执行后得到的数据,并返回到shell命令行中
—>用来查询数据
PS:回调函数非常重要的机制:在回调函数中,一定一定一定要拥有返回值
如果没有返回值,查询一次数据后,就结束了
一定要有:return 0;
关闭数据库:
SQLITE_API int sqlite3_close(sqlite3*);
功能:关闭数据库
参数:
sqlite3*:句柄
参考代码
#include #include //说明要调用数据库的API #include //重头戏:回调函数 int readMsg(void *arg,int lie,char**data,char**name){//printf("arg:%s\n",(char *)arg);//printf("lie:%d\n",lie);//打印:先打印表头/列名 在打印数据static int flag=0;int i;if(!flag){for(i=0;i<lie;i++){//打印列名/表头printf("%s ",name[i]);}printf("\n");flag=1;}for(i=0;i打开数据库sqlite3 *ppDb;//制作句柄char *errmsg;//用来保存数据库报错的变量int ret=sqlite3_open("1.db",&ppDb);if(ret!=SQLITE_OK){perror("sqlite_open error");return -1;}//2>有库了,那我们接下来干什么? 建立表 char sql[100]="create table if not exists xx(id int,name char[20],passwd char[20]);";//保存sql语句//执行函数,操作sql语句 ret=sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);if(ret!=SQLITE_OK){//perror("sqlite_exec error");--->不适用与数据库内报错的报错信息printf("error:%s\n",errmsg);return -1;}printf("表xx创建成功\n");//3>表创建成功,后续:添加数据bzero(sql,sizeof(sql));//strcpy(sql,"insert into xx values(1,'wuyanzu','123456');");//第一种方法:单引号//strcpy(sql,"insert into xx values(2,\"Tonly\",\"123\");");//第二种方法:转义strcpy(sql,"insert into xx values(3,\"99号助教\",\"1234\");");ret=sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);if(ret!=SQLITE_OK){printf("error:%s\n",errmsg);return -1;}printf("数据添加成功\n");//4>查询数据 --->!!!!!!!!!!!!!!!!!!!!!!!!!!!!/**/bzero(sql,sizeof(sql));strcpy(sql,"select * from xx;");ret=sqlite3_exec(ppDb,sql,readMsg,"水亿方欢迎你",&errmsg);if(ret!=SQLITE_OK){printf("error:%s\n",errmsg);return -1;}//5>关闭数据库ret=sqlite3_close(ppDb);return 0;}
sqlite3安装包:
链接:https://pan.baidu.com/s/15gpv_GcqFpXVUagPgY6D5Q?pwd=no7f
提取码:no7f