Day6--网络编程

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
int do_insert(sqlite3 *db);
int do_delete(sqlite3 *db);
int do_update(sqlite3 *db);
int main(int argc, const char *argv[])
{
	if(argc<2){
		printf("输入错误,请重新输入\n");
		return -1;
	}
	//创建数据库
	sqlite3* db=NULL;
	if(sqlite3_open(argv[1],&db)!=SQLITE_OK){
		fprintf(stderr,"sqlite3_open:%s errcode:%d __%d__\n",\
				sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
		return -1;
	}

	//创建表格
	char ptr[128]="create table if not exists stu (id int, name char, score float);";
	char *str=NULL;
	if(sqlite3_exec(db,ptr,NULL,NULL,&str)!=SQLITE_OK){
		fprintf(stderr,"sqlite3_exec:%s errcode:%d __%d__\n",\
				sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
		return -1;
	}

	//建立菜单
	char c;
	while(1){
		system("clear");
		printf("*********1.增*********\n");
		printf("*********2.删*********\n");
		printf("*********3.改*********\n");
		printf("*********4.查*********\n");
		printf("*********5.退出*******\n");
		printf("请输入序号>>>");
		scanf(" %c",&c);
		switch(c){
			case '1':
				do_insert(db);
				break;
			case '2':
				do_delete(db);
				break;
			case '3':
				do_update(db);
				break;
			case '4':
				//do_search();
				break;
			case '5':
				goto END;
				break;
			default:
				printf("输入错误请重新输入\n");
				break;
		}
	}  
END:
	//关闭数据库	
	if(sqlite3_close(db)!=SQLITE_OK){
		fprintf(stderr,"sqlite3_close:%s errcode:%d __%d__\n",\
				sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
		return -1;
	}
	return 0;
}
/*
 * function:    增
 * @param [ in] 数据库的首地址
 * @param [out] 
 * @return      成功返回0,失败返回-1;
 */
int do_insert(sqlite3 *db){
	char buf[128]="";
	char name[128]="";
	float score;
	int id;
	printf("请输入需要插入的数据>>>");
	scanf("%d %s %f",&id,name,&score);
	sprintf(buf,"insert into stu values (%d,%s,%f)",id,name,score);
	char *str=NULL;
	if(sqlite3_exec(db,buf,NULL,NULL,&str)!=SQLITE_OK){
		fprintf(stderr,"sqlite3_exec:%s errcode:%d __%d__\n",\
				sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
		return -1;
	}
	return 0;
}

/*
 * function:    删
 * @param [ in] 数据库首地址
 * @param [out] 
 * @return      成功返回0,失败返回-1
 */
int do_delete(sqlite3 *db){
	char buf[128]="";
	char name[128]="";
	char *str=NULL;
	float score;
	int id;
	char c;
	printf("*****1.根据id删除*****\n");
	printf("*****2.根据name删除***\n");
	printf("*****3.根据score删除**\n");
	printf("*****4.删除全部数据***\n");
	printf("*****5.退出***********\n");
	while(1){
		printf("请输入序号>>>");
		scanf(" %c",&c);
		switch(c){
			case '1':
				{
					bzero(buf,sizeof(buf));
					printf("请输入id>>>");
					scanf("%d",&id);
					sprintf(buf,"delete from stu where id=%d",id);
					if(sqlite3_exec(db,buf,NULL,NULL,&str)!=SQLITE_OK){
						fprintf(stderr,"sqlite3_exec:%s errcode:%d __%d__\n",\
								sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
						return -1;
					}
				}	
				break;
			case '2':
				{
					bzero(buf,sizeof(buf));
					bzero(name,sizeof(name));
					printf("请输入name>>>");
					scanf("%s",name);
					sprintf(buf,"delete from stu where name=%s",name);
					if(sqlite3_exec(db,buf,NULL,NULL,&str)!=SQLITE_OK){
						fprintf(stderr,"sqlite3_exec:%s errcode:%d __%d__\n",\
								sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
						return -1;
					}
				}	
				break;
			case '3':
				{
					bzero(buf,sizeof(buf));
					printf("请输入score>>>");
					scanf("%f",&score);
					sprintf(buf,"delete from stu where score=%f",score);
					if(sqlite3_exec(db,buf,NULL,NULL,&str)!=SQLITE_OK){
						fprintf(stderr,"sqlite3_exec:%s errcode:%d __%d__\n",\
								sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
						return -1;
					}
				}	
				break;
			case '4':
				{
					bzero(buf,sizeof(buf));
					sprintf(buf,"delete from stu");
					if(sqlite3_exec(db,buf,NULL,NULL,&str)!=SQLITE_OK){
						fprintf(stderr,"sqlite3_exec:%s errcode:%d __%d__\n",\
								sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
						return -1;
					}
				}	
				break;
			case '5':
				goto END;
				break;
			default:
				printf("输入错误请重新输入\n");
				break;
		}
	}
END:
	return 0;
}

/*
 * function:    改
 * @param [ in] 数据库首地址
 * @param [out] 
 * @return      成功返回0,失败返回-1
 */
int do_update(sqlite3 *db){
	char buf[128]="";
	char *str=NULL;
	int id;
	char name[128]="";
	float score;
	char c;
	printf("*****1.根据id修改score*****\n");
	printf("*****2.根据name修改score***\n");
	printf("*****3.退出****************\n");
	while(1){
		printf("请输入序号>>>");
		scanf(" %c",&c);
		switch(c){
			case '1':
				bzero(buf,sizeof(buf));
				printf("请输入id和需要修改的score>>>");
				scanf("%d %f",&id,&score);
				sprintf(buf,"update stu set score=%f where id=%d",score,id);
				if(sqlite3_exec(db,buf,NULL,NULL,&str)!=SQLITE_OK){
					fprintf(stderr,"sqlite3_exec:%s errcode:%d __%d__\n",\
							sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
					return -1;
				}
				break;
			case '2':
				bzero(buf,sizeof(buf));
				bzero(name,sizeof(name));
				printf("请输入name和需要修改的score>>>");
				scanf("%s %f",name,&score);
				sprintf(buf,"update stu set score=%f where name=%s",score,name);
				if(sqlite3_exec(db,buf,NULL,NULL,&str)!=SQLITE_OK){
					fprintf(stderr,"sqlite3_exec:%s errcode:%d __%d__\n",\
							sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
					return -1;
				}
				break;
			case '3':
				goto END;
				break;
			default:
				printf("输入错误请重新输入\n");
				break;
		}
	}
END:
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值