网络编程-day6
#include <head.h>/*
//回调函数
int call(void *arg, int cols, char **msgtext, char **msgheader)
{
for(int i=0; i<cols; i++)
{
if(*(char *)arg==*(msgtext+i))
{
printf("遍历完成未找到该id\n");
return -1;
}
printf("有该id可以操作\n");}
}//判断是否存在
int search(sqlite3 *ppDb,int id)
{char *sql = "select id from stuinfo";char *errmsg = NULL;
int flag = 0;
if(sqlite3_exec(ppDb, sql,call,&id, &errmsg) != SQLITE_OK)
{
printf("查询失败:%s\n", errmsg);
sqlite3_free(errmsg);
errmsg = NULL;
return -1;
}printf("查询成功\n");
return 0;
}
*/
//增
int do_add(sqlite3 * ppDb)
{int add_id; //要添加的学号char add_name[20]; //要添加的姓名double add_socre; //要添加的成绩printf("输入学号:");scanf("%d",&add_id);printf("请输入姓名:");scanf("%s",add_name);printf("请输入成绩:");scanf("%lf",&add_socre);getchar();//准备sql语句来添加char sql[128]="";sprintf(sql,"insert into stuinfo values(%d,\"%s\",%.2lf);",add_id,add_name,add_socre);//定义一个指针来接收错误char * errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("添加失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}if(sqlite3_changes(ppDb)!=0){printf("添加成功\n");}return 0;
}//删
int do_delete(sqlite3 *ppDb)
{int delete_id;printf("请输入要删除的id号:");scanf("%d",&delete_id);getchar();// search(ppDb,delete_id);//准备一个sql语句来删除char sql[128]="";sprintf(sql,"delete from stuinfo where id=%d;",delete_id);//定义一个指针来接收错误char * errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("删除失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}printf("删除成功\n");return 0;}//改
int do_update(sqlite3 * ppDb)
{int update_id;char update_name[20]; //要修改的姓名double update_socre; //要修改的成绩printf("请输入ID:");scanf("%d",&update_id);printf("请输入新姓名:");scanf("%s",update_name);printf("请输入新成绩:");scanf("%lf",&update_socre);getchar();// search(ppDb,update_id);//定义一个sql语句用来修改char sql[128]="";sprintf(sql,"update stuinfo set name=\"%s\",socre=%.2lf where id=%d;",update_name,update_socre,update_id);//定义一个指针来接收错误char * errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("修改失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}printf("修改成功\n");return 0;}//自定义查询函数的回调函数
int callback(void *arg, int cols, char **msgtext, char **msgheader)
{if( *(int *)arg ==0){//先输出表头for(int i=0; i<cols; i++){printf("%s\t", msgheader[i]);}printf("\n");*(int *)arg = 1;}//输出内容for(int i=0; i<cols; i++){printf("%s\t", msgtext[i]);}printf("\n");return 0;
}//查
int do_search(sqlite3 *ppDb)
{char *sql = "select * from stuinfo;";char *errmsg = NULL;int flag = 0;if(sqlite3_exec(ppDb, sql, callback, &flag, &errmsg) != SQLITE_OK){printf("查询失败:%s\n", errmsg);sqlite3_free(errmsg);errmsg = NULL;return -1;}printf("查询成功\n");return 0;
}//主函数
int main(int argc, const char *argv[])
{//打开数据库sqlite3 *ppDb=NULL;if(sqlite3_open("./my.db",&ppDb)!=SQLITE_OK){printf("my.db open error\n");return -1;}//准备一个SQL语句用来创建数据表char * sql="CREATE TABLE IF NOT EXISTS stuinfo(id int primary key,name char not null, socre double);";//定义一个指针来接收错误char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,& errmsg)!=SQLITE_OK){printf("数据表创建失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg==NULL;return -1;}printf("数据表创建成功\n");int menu=-1;while(1){system("clear");printf("================学生管理系统================\n");printf("===================1、增加==================\n");printf("===================2、删除==================\n");printf("===================3、修改==================\n");printf("===================4、查找==================\n");printf("===================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: exit(EXIT_SUCCESS);default :printf("编号输入错误,请重新输入\n");}printf("按任意键后,按回车键清屏\n");while(getchar()!='\n');}//关闭数据库sqlite3_close(ppDb);return 0;
}
增
删
改
查