使用sqlite3数据库,实现增删改查操作
#include <myhead.h>int do_add(sqlite3 *sqdb)
{int add_num;char add_name[128];double add_score;printf("请输入要添加的学生编号:");scanf("%d",&add_num);printf("请输入要添加的学生姓名:");scanf("%s",add_name);printf("请输入要添加的学生分数:");scanf("%lf",&add_score);getchar();char sql[128]="";snprintf(sql,sizeof(sql),"insert into Stu values(%d,\"%s\",%.2lf);",add_num,add_name,add_score);char *errmsg=NULL;if(sqlite3_exec(sqdb,sql,NULL,NULL,&errmsg) != SQLITE_OK){printf("insert into Stu errro:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("插入成功\n");}int do_delete(sqlite3 *sqdb)
{int id=0;char sql[128]="";printf("请输入要删除的学生的编号:");scanf("%d",&id);getchar();snprintf(sql,sizeof(sql),"delete from Stu where num=%d;",id);char *errmsg=NULL;if(sqlite3_exec(sqdb,sql,NULL,NULL,&errmsg) != SQLITE_OK){printf("delete from Stu err:%s\n",errmsg);sqlite3_free(errmsg);return -1;}
}int do_update(sqlite3 *sqdb)
{int id=0;char name[128]="";double score=0;printf("请输入要修改的学生编号:");scanf("%d",&id);printf("请输入要修改的学生姓名:");scanf("%s",name);printf("请输入要修改的学生成绩:");scanf("%lf",&score);getchar();char sql[128]="";snprintf(sql,sizeof(sql),"update Stu set name=\"%s\",score=%.2lf where num=%d;",name,score,id);char *errmsg=NULL;if(sqlite3_exec(sqdb,sql,NULL,NULL,&errmsg) != SQLITE_OK){printf("update error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}
}
int callback(void* arg,int cols,char **col_text,char **col_name)
{if(*(int*)arg == 0){for(int i=0;i<cols;i++)printf("%s\t",*(col_name+i));}printf("\n");*(int*)arg=1;for(int i=0;i<cols;i++)printf("%s\t",*(col_text+i));printf("\n");return 0;
}int do_search(sqlite3 *sqdb)
{int flag=0;char sql[128]="select * from Stu";char *errmsg=NULL;if(sqlite3_exec(sqdb,sql,callback,&flag,&errmsg) != SQLITE_OK){printf("Stu search error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("查找结束\n");}int do_search1(sqlite3 *sqdb)
{char sql[128]="select * from Stu;";char **pazResult=NULL;int row=0;int col=0;char *errmsg=NULL;if(sqlite3_get_table(sqdb,sql,&pazResult,&row,&col,&errmsg) != SQLITE_OK){printf("get_table error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}for(int i=0;i<row+1;i++){for(int j=0;j<col;j++)printf("%s\t",pazResult[i*col+j]);printf("\n");}sqlite3_free_table(pazResult);return 0;
}int main(int argc, const char *argv[])
{sqlite3* sqdb=NULL;int res=sqlite3_open("my.db",&sqdb);if(res != SQLITE_OK){int err_code=sqlite3_errcode(sqdb);printf("open error:%d %s\n",err_code, sqlite3_errmsg(sqdb));return -1;}printf("db open success\n");char sql[128]="create table if not exists Stu(num int,name char,score double);";char *errmsg=NULL;if(sqlite3_exec(sqdb,sql,NULL,NULL,&errmsg) != SQLITE_OK){printf("sqlite create table error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("table Stu create success\n");//制作菜单完成学生管理系统int menu=0;while(1){system("clear");printf("\t\t=======学生信息管理系统=======\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("请输入功能选项:\n");scanf("%d",&menu);getchar();switch(menu){case 1:{do_add(sqdb);}break;case 2:{do_delete(sqdb);}break;case 3:{do_update(sqdb);}break;case 4:{do_search(sqdb);// do_search1(sqdb);}break;case 0:goto END;default:printf("您输入的选项有误,请重新输入\n");}printf("请输入任意键按回车清屏\n");while(getchar() != '\n');}END:sqlite3_close(sqdb);return 0;
}