sqlite的增删改

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
int main(int argc, const char *argv[])
{
	sqlite3 *db =NULL;
	if(sqlite3_open("./My.db",&db)!=SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open :%s  errcode :%d\n",sqlite3_errmsg(db),sqlite3_errcode(db));
		return -1;
	}

	printf("sqlite3_open success\n");


	//创建一个表
	//c代码中编写的sql语句的格式与数据库中编写的一致
	
	char sql[128]= "create table if not exists stu (id int ,name char ,score float);";
	char *errmsg =NULL;

	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		fprintf(stderr,"line:%d sqlite3_exec: %s\n",__LINE__,errmsg);
		return -1;
	}
	printf("create table stu success\n");
	
	int id =0;
	char name[10]="";
	float score = 0;
	char c=0;
	while(1)
	{
		system("clear");
		printf("-----------------------\n");
		printf("---------1.增----------\n");
		printf("---------2.删----------\n");
		printf("---------3.改----------\n");
		printf("---------4.查----------\n");
		printf("---------5.退出--------\n");
		printf("-----------------------\n");
		printf("请输入>>>");
		c = getchar();

	//	while(getchar()!=10);
		switch(c)
		{
		case '1':

			printf("请输入要增加的数据>>>id: name: score:\n");
			scanf("%d%s%f",&id,name,&score);
			sprintf(sql,"insert into stu values (%d,'%s',%f)",id,name,score);//执行sql语句
			if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				fprintf(stderr,"line:%d sqlite3_exec: %s\n",__LINE__,errmsg);
				return -1;
			}
			printf("insert success\n");
			break;
//删除指定记录
		case '2':
			
			printf("请输入要删除行的id号>>>");
			scanf("%d",&id);
			sprintf(sql,"delete from stu where id=%d",id);
			if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				fprintf(stderr,"line:%d sqlite3_exec: %s\n",__LINE__,errmsg);
				return -1;
			}
			printf("delete success\n");

			break;
	//修改数据记录
		case '3':
			while(1)
			{
				char fd[10]="";
				printf("请输入要修改的数据的id号>>>");
				scanf("%d",&id);
				printf("请输入要修改的类型>>name/score\n");
				scanf("%s",fd);
				if(strcmp("score",fd)==0)
				{
					printf("输入score要修改为的值\nscore= ");
					scanf("%f",&score);
					sprintf(sql,"update stu set score=%f where id=%d",score,id);
					if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
					{
						fprintf(stderr,"line:%d sqlite3_exec: %s\n",__LINE__,errmsg);
						return -1;
					}
					printf("update success\n");
					break;
				}
				else if(strcmp("name",fd)==0)
				{
					printf("输入name要修改为的值\nname= ");
					scanf("%s",name);
					sprintf(sql,"update stu set name='%s' where id=%d",name,id);
					if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
					{
						fprintf(stderr,"line:%d sqlite3_exec: %s\n",__LINE__,errmsg);
						return -1;
					}
					printf("update success\n");
					break;
				}
				else
				{
					printf("修改类型不存在,请重新输入\n");
					break;
				}
			}

			break;
		//查看数据表数据记录
		case '4':
			sprintf(sql,"select * from stu");
			if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				fprintf(stderr,"line:%d sqlite3_exec : %s\n",__LINE__,errmsg);
				return -1;
			}
			break;
		case '5':
			goto END;
			break;
		default:
			printf("输入错误,请重新输入\n");
		}


	}
END:
	//关闭数据库
	if(sqlite3_close(db)!=SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open :%s  errcode :%d\n",sqlite3_errmsg(db),sqlite3_errcode(db));
		return -1;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值