思维导图
#include <myhead.h>
void insert_msg(sqlite3** ppDb)
{
int numb;
char name[32];
char sex[4];
double score;
printf("请输入学生学号:");
scanf("%d",&numb);
while(getchar()!=10);
printf("请输入学生姓名:");
scanf("%s",name);
while(getchar()!=10);
// fgets(name,sizeof(name),stdin);
// name[strlen(name-1)]=0;
printf("请输入学生性别:");
scanf("%s",sex);
while(getchar()!=10);
printf("请输入学生分数:");
scanf("%lf",&score);
while(getchar()!=10);
char sql[256];
sprintf(sql,"insert into stu values(%d,\"%s\",\"%s\",%.2f);",\
numb,name,sex,score);
printf("%s\n",sql);
char *errmsg=NULL;
if(sqlite3_exec(*ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("%s\n",errmsg);
return;
}
printf("添加学生信息成功\n");
}
void delete_msg(sqlite3** ppDb)
{
int numb;
printf("请输入要删除的学生学号:");
scanf("%d",&numb);
while(getchar()!=10);
char sql[256];
char *errmsg=NULL;
sprintf(sql,"DELETE FROM Stu WHERE numb=%d",numb);
if(sqlite3_exec(*ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("%s\n",errmsg);
return;
}
printf("删除学生信息成功\n");
}
void update_msg(sqlite3** ppDb)
{
int numb;
printf("提示->学生学号不允许修改\n");
printf("请输入要修改的学生信息字段例如name=\"李四\"\n");
char buf[128];
scanf("%s",buf);
while(getchar()!=10);
printf("请输入要修改的学生学号:");
scanf("%d",&numb);
while(getchar()!=10);
char sql[256];
char *errmsg=NULL;
sprintf(sql,"UPDATE Stu SET %s WHERE numb=%d;",buf,numb);
printf("%s\n",sql);
if(sqlite3_exec(*ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("%s\n",errmsg);
return;
}
printf("修改学生信息成功\n");
}
void delete_list(sqlite3** ppDb)
{
char sql[256];
memset(sql,0,256);
strcat(sql,"DROP TABLE Stu");
char ch;
printf("是否确认删除Y\n");
scanf("%c",&ch);
while(getchar()!=10);
if(ch=='Y'||ch=='y')
{
char *errmsg=NULL;
if(sqlite3_exec(*ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("%s\n",errmsg);
return;
}
printf("删除成功\n");
}
else
{
return;
}
}
int main(int argc, const char *argv[])
{
sqlite3* ppDb = NULL;//数据库句柄
if(sqlite3_open("./mydb.db",&ppDb)!=SQLITE_OK)
{
printf("sqlite3_open error:%s,errcode=%d\n",\
sqlite3_errmsg(ppDb),sqlite3_errcode(ppDb));
//sqlite3_errmsg(ppDb) 获取错误信息函数
//sqlite3_errcode(ppDb) 获取错误信息对应错误码函数
return -1;
}
printf("数据库打开成功\n");
#if 1
char sql[128]="create table if not exists Stu(numb int primary key,name char,sex char,score double)";
char *errmsg=NULL;
if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("%s\n",errmsg);
return -1;
}
printf("数据表创建成功\n");
#endif
//创建数据表
while(1)
{
int ch;
printf("请选择要进行的操作:\n");
printf("1:添加信息到表中\n");
printf("2:修改表中的信息\n");
printf("3:删除表中的信息\n");
printf("4:删除表\n");
printf("5:退出\n");
scanf("%d",&ch);
while(getchar()!=10);
switch(ch)
{
case 1:
insert_msg(&ppDb);
break;
case 2:
update_msg(&ppDb);
break;
case 3:
delete_msg(&ppDb);
break;
case 4:
delete_list(&ppDb);
break;
case 5:
return 1;
default:
printf("输入有误请重新输入\n");
break;
}
}
sqlite3_close(ppDb);
return 0;
}