3.21作业

#include<myhead.h>

int do_add(sqlite3 *ppDb)

{

int xue=0;

char name20="";

double coure=0;

char sql128="";

printf("请输入学号\n");

scanf("%d",&xue);

printf("请输入姓名\n");

scanf("%s",name);

printf("请输入成绩");

scanf("%lf",&coure);

getchar();

sprintf(sql,"insert into stu values(%d, \"%s\",%lf);",xue,name,coure);

char *errmsg=NULL;

if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg) !=SQLITE_OK)

{

printf("exec error:%s\n",errmsg);

sqlite3_free(errmsg);

return -1;

}

printf("插入成功");

return 0;

}

int callback(void *arg,int cols,char **masText,char **msgHeader)

{

if(*((int *)arg)==0)

{

for(int i=0;i<cols;i++)

{

printf("%s\t",*(msgHeader+i));

}

printf("\n");

(*((int *)arg))++;

for(int i=0;i<cols;i++)

{

printf("%s\t",*(masText+i));

}

printf("\n");

return 0;

}

}

int do_search(sqlite3 *ppDb)

{

char sql128="select *from stu;";

char *errmsg=NULL;

int flag=0;

if(sqlite3_exec(ppDb,sql,callback,&flag,&errmsg)!=SQLITE_OK)

{

printf("exec error:%s\n",errmsg);

sqlite3_free(errmsg);

return -1;

}

return 0;

}

int do_delete(ppDb)

{

char name20="";

char sql128="";

printf("请输入要删除人");

scanf("%s",name);

sprintf(ppDb,"delete stu set name==%s;",name);

char *errmsg=NULL;

if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)

{

printf("exec error:%s\n",errmsg);

sqlite3_free(errmsg);

return -1;

}

return 0;

}

int do_update(ppDb)

{

char name20="";

int xue=0;

double coure=0;

char sql128="";

printf("输入名字\n");

scanf("%s",name);

printf("需要更改的学号\n");

scanf("%d",&xue);

printf("输入要修改的分\n数");

scanf("%lf",&coure);

sprintf(sql,"update stu set name=="%s" where xue==%d AND coure==%d;",name,xue,coure);

char *errmsg=NULL;

if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)

{

printf("exec error:%s\n",errmsg);

sqlite3_free(errmsg);

return -1;

}

return 0;

}

int main(int argc, const char *argv\[\])

{

//1、定义数据库句柄指针

sqlite3 *ppDb = NULL;

//2、打开(创建)数据库

if(sqlite3_open("./my.db", &ppDb) != SQLITE_OK)

{

fprintf(stderr, "sqlite3_open error:errmsg = %s, errcode = %d\n",\

sqlite3_errmsg(ppDb), sqlite3_errcode(ppDb));

return -1;

}

printf("sqlite3_open success\n");

//3、创建数据库表

//3.1 准备sql语句

char sql128 = "create table if not exists Stu(numb int, name char, score double);";

//char *sql = "create table if not exists Stu(numb int, name char, score double);";

char *errmsg = NULL; //用于接收出错时的错误信息

//3.2 执行sql语句

if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK)

{

printf("exec error:%s\n", errmsg);

return -1;

}

printf("create table Stu success\n");

//4、对数据表进行操作

int menu = -1;

while(1)

{

system("clear");

printf("\t\t============XXX 学生管理系统=============\n");

printf("\t\t============1、添加学生信息=============\n");

printf("\t\t============2、删除学生信息=============\n");

printf("\t\t============3、修改学生信息=============\n");

printf("\t\t============4、查找学生信息=============\n");

printf("\t\t============0、退出系统=============\n");

printf("请输入功能:");

scanf("%d", &menu);

getchar();

//对功能多分支选择

switch(menu)

{

case 1:

{

do_add(ppDb);

}

break;

case 2:

{

do_delete(ppDb);

}

break;

case 3:

{

do_update(ppDb);

}

break;

case 4:

{

do_search(ppDb);

}

break;

case 0:goto END;

default:printf("您输入的功能有误,请重新输入!!!!\n");

}

printf("请输入任意键,按回车清屏\n");

while(getchar() != '\n');

}

END:

//关闭数据库

sqlite3_close(ppDb);

return 0;

}

相关推荐
say_fall6 分钟前
【Git 精品详解】企业规范:企业级开发模型、Git Flow、发版流程规范、Code Owner 制度、事故应急回滚
大数据·linux·服务器·git·学习·elasticsearch
一杯奶茶¥30 分钟前
Ubuntu系统镜像各个版本下载Ubuntu镜像合集资源Linux系统镜像乌班图Linux系统镜像
linux·运维·ubuntu·镜像·;inux镜像·ubuntu镜像
三84410 小时前
文件查找/文件压缩/解压缩
linux·运维·服务器
小猪写代码10 小时前
Linux 管道(Pipeline)作业
linux·运维·服务器
会周易的程序员12 小时前
microLog 的本地日志读取接口 log_reader — 本地日志文件读取工具开发指南
linux·物联网·架构·嵌入式·日志·iot·aiot
yoothey13 小时前
报废审批流规则引擎设计——责任链模式完整实现
linux·开发语言·bash
2501_9259633813 小时前
外设的常见问题
linux
l1t13 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb
柳鲲鹏14 小时前
LINUX高通平台交叉编译地图软件GDAL
linux
fei_sun14 小时前
路径MTU发现
linux·运维·网络