一 数据库创建和校准函数代码实现
数据库创建函数
校准函数
open 函数:
参数一:数据库名字
参数二 :二级指针 定义一个一级指针取地址赋值给他即可
校准函数 :
参数说明:open的指针变量 (第一个蚕食)
执行的语句:create table stu(id Integer,name char,score Integer);(第二个参数)
第三第四 参数:暂不用回调函数 直接都为NULL
第五 参数 :二级指针 定义一个一级指针取地址赋值给他即可
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>
#define sqlite_name "student.db"
int main()
{
sqlite3 *db;
char *errmsg;
if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
printf("sqlite3_opne is success\n");
}
if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
{
printf("sqlite3_exec is success\n");
}
return 0;
}
二 插入 函数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>
#define sqlite_name "student.db"
int do_insert(sqlite3 *db)//插入 成绩 学号 名字 的函数
{
int id;
char name[32]={};
int score;
char sql[128]={};
printf("id:");
scanf("%d",&id);//输入学号
getchar();
printf("name:");
scanf("%s",name);//输入名字
getchar();
printf("score:");
scanf("%d",&score);//输入成绩
getchar();
sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//学号成绩名字存 放在一个地址
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("stu is success\n");
}
return 0;
}
int main()
{
sqlite3 *db;
char *errmsg;
if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
printf("sqlite3_open is success\n");
}
if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
{
printf("sqlite3_exec is success\n");
}
while(1)
{
int com;
printf("*******************\n");
printf("1:inster 2:query 3:update 4:delete\n");
scanf("%d",&id);
getchar();
switch(com)
{
case 1 :do_insert(db);//插入 成绩 学号 名字 的函数
break;
}
}
return 0;
}
1 插入函数的形参和函数名 do_insert(sqlite3 *db);
2 在里面用scanf 输入 并且吸收回车 即可
3 用:sprintf存储函数 把数据放在一起
4 用 sqlite3_exec校准
三 删除函数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>
#define sqlite_name "student.db"
int do_insert(sqlite3 *db)//插入 成绩 学号 名字 的函数
{
int id;
char name[32]={};
int score;
char sql[128]={};
printf("id:");
scanf("%d",&id);//输入学号
getchar();
printf("name:");
scanf("%s",name);//输入名字
getchar();
printf("score:");
scanf("%d",&score);//输入成绩
getchar();
sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//学号成绩名字存 放在一个地址
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("stu is success\n");
}
return 0;
}
int do_insert(sqlite *db)
{
int id;
char name[32]={};
char sql[128]={};
char *errmsg;
printf("delete id:");
scanf(“%d”,&id);
sprintf(sql,"delete from stu where id=%d",id);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("delete is success\n");
}
reurn 0;
}
int main()
{
sqlite3 *db;
char *errmsg;
if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
printf("sqlite3_open is success\n");
}
if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
{
printf("sqlite3_exec is success\n");
}
while(1)
{
int com;
printf("*******************\n");
printf("1:inster 2:query 3:update 4:delete\n");
scanf("%d",&id);
getchar();
switch(com)
{
case 1 :do_insert(db);//插入 成绩 学号 名字 的函数
case 4:do_insert(db);//删除成绩 学号 名字 的函数
break;
}
}
return 0;
}
四 更新函数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>
#define sqlite_name "student.db"
int do_insert(sqlite3 *db)//插入 成绩 学号 名字 的函数
{
int id;
char name[32]={};
int score;
char sql[128]={};
printf("id:");
scanf("%d",&id);//输入学号
getchar();
printf("name:");
scanf("%s",name);//输入名字
getchar();
printf("score:");
scanf("%d",&score);//输入成绩
getchar();
sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//学号成绩名字存 放在一个地址
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("stu is success\n");
}
return 0;
}
int do_update(sqlite3 *db)
{
int id;
char name[32]={};
char sql[128]={};
char *errmsg;
printf("after update id:");
scanf(“%d”,&id);
getchar();
printf("after update name :");
scanf(“%s”,name);
getchar();
printf("after update score:");
scanf(“%d”,&id);
getchar();
sprintf(sql,"update stu set name='%s',score=%d where id=%d",name,score,id);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("update is success\n");
}
reurn 0;
}
int do_delete( sqlite3 *db)
{
int id;
char sql[128]={};
char *errmsg;
printf("delete id:");
scanf(“%d”,&id);
getchar();
sprintf(sql,"delete from stu where id=%d",id);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("delete is success\n");
}
}
int main()
{
sqlite3 *db;
char *errmsg;
if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
printf("sqlite3_open is success\n");
}
if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
{
printf("sqlite3_exec is success\n");
}
while(1)
{
int com;
printf("*******************\n");
printf("1:inster 2:query 3:update 4:delete\n");
scanf("%d",&id);
getchar();
switch(com)
{
case 1 :do_insert(db);//插入 成绩 学号 名字 的函数
case 2:do_query(db);//查询成绩 学号 名字 的函数
case 3:do_update(db);//更新成绩 学号 名字 的函数
case 4:do_insert(db);//删除成绩 学号 名字 的函数
break;
}
}
return 0;
}
五 查询函数
老是去数据库查 很麻烦 直接写一个
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>
#define sqlite_name "student.db"
int do_insert(sqlite3 *db)//插入 成绩 学号 名字 的函数
{
int id;
char name[32]={};
int score;
char sql[128]={};
printf("id:");
scanf("%d",&id);//输入学号
getchar();
printf("name:");
scanf("%s",name);//输入名字
getchar();
printf("score:");
scanf("%d",&score);//输入成绩
getchar();
sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//学号成绩名字存 放在一个地址
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("stu is success\n");
}
return 0;
}
int do_update(sqlite3 *db)
{
int id;
char name[32]={};
char sql[128]={};
char *errmsg;
printf("after update id:");
scanf(“%d”,&id);
getchar();
printf("after update name :");
scanf(“%s”,name);
getchar();
printf("after update score:");
scanf(“%d”,&id);
getchar();
sprintf(sql,"update stu set name='%s',score=%d where id=%d",name,score,id);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("update is success\n");
}
reurn 0;
}
int do_delete( sqlite3 *db)
{
int id;
char sql[128]={};
char *errmsg;
printf("delete id:");
scanf(“%d”,&id);
getchar();
sprintf(sql,"delete from stu where id=%d",id);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("delete is success\n");
}
}
int callback(void *para,int_f_num,char **argv,char **f_name)
{
int i;
for(i=0;i<f_num;i++)
{
printf(" %s ",argv[i]);//指针数组 每个地址就是一个元素
}
return 0;
}
int do_query(sqlite3 *db)
{
char sql[128]={};
char *errmsg;
sprintf(sql,"select *from stu");
if(sqlite3_exec(db,sql,callback,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
{
printf("%s\n",errmsg);
exit(1);
}
else//成功 打印信息
{
printf("select is success\n");
}
return 0;
}
int main()
{
sqlite3 *db;
char *errmsg;
if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
printf("sqlite3_open is success\n");
}
if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3 不等于SQLITE_OK 就是失败
{
printf("%s\n",sqlite3_errmsg(db));
exit(1);
}
else//否则就是成功
{
{
printf("sqlite3_exec is success\n");
}
while(1)
{
int com;
printf("*******************\n");
printf("1:inster 2:query 3:update 4:delete\n");
scanf("%d",&id);
getchar();
switch(com)
{
case 1 :do_insert(db);//插入 成绩 学号 名字 的函数
case 2:do_query(db);//查询成绩 学号 名字 的函数
case 3:do_update(db);//更新成绩 学号 名字 的函数
case 4:do_insert(db);//删除成绩 学号 名字 的函数
break;
}
}
return 0;
}
总结
1 先把想实现的数据存入sprintf 再存放到sqlite3_exec函数
2 sqlite3_exec 是起到校准的作用
校准正确就可以正常操作