作业-day-240524

使用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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值