数据库增删改小练习

数据库增删改小练习

#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
#include <string.h>

void do_insert(sqlite3*);

void do_delete(sqlite3*);

void do_update(sqlite3*);

int main(int argc, const char *argv[])
{
	sqlite3* db = NULL;
	if(sqlite3_open("stu.db", &db) != SQLITE_OK)
	{
		fprintf(stderr, "line:%d sqlite3_open:%s\n", __LINE__, sqlite3_errmsg(db));
		return -1;
	}
	printf("数据库创建成功\n");

	//创建一张表格
	char sql[128] = "create table if not exists stu (id int primary key, 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;
	}

	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': 		//增 --->全字段输入
			do_insert(db);
			break;
		case '2': 		//删 --->通过id删除
			do_delete(db);
			break;
		case '3': 		//改 --->通过id更改
			do_update(db);
			break;
		case '4':
			break;
		case '5':
			goto END;
		default:
			printf("输入错误!请重新输入\n");
			break;
		}

		printf("请输入任意字符清屏\n");
		while(getchar() != 10);
	}

END:
	//关闭数据库
	if(sqlite3_close(db) != SQLITE_OK)
	{
		fprintf(stderr, "line:%d sqlite3_close:%s\n", __LINE__, sqlite3_errmsg(db));
		return -1;
	}
	printf("database close success\n");

	return 0;
}

void do_insert(sqlite3* db)
{
	char sql[128] = "";
	int id = 0;
	char name[20] = "";
	float score = 0;
	char *errmsg =NULL;
	printf("请输入id name score>>>");
	scanf("%d %s %f", &id, name, &score);
	while(getchar() != 10);
	sprintf(sql,"insert into stu values (%d,\"%s\", %f)", id, name, score);
	if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) !=SQLITE_OK)
	{
		fprintf(stderr, "line:%d sqlite3_exec:%s\n", __LINE__, errmsg);
		return ;
	}
	printf("插入成功\n");
}

void do_delete(sqlite3* db)
{	
	char sql[128] = "";
	int id = 0;
	char *errmsg =NULL;
	printf("请输入要删除的记录的id>>>");
	scanf("%d", &id);
	while(getchar() != 10);
	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 ;
	}
	printf("删除成功\n");
}

void do_update(sqlite3* db)
{
	char sql[128] = "", seg[10], value[10];
	int id = 0;
	char *errmsg =NULL;
	printf("请输入要更改的记录id 字段 内容>>>");
	scanf("%d %s %s", &id, seg, value);
	while(getchar() != 10);
	if(!strcmp(seg, "name"))
		sprintf(sql,"UPDATE stu SET %s=\"%s\" WHERE id=%d", seg, value, id);
	else
		sprintf(sql,"UPDATE stu SET %s=%s WHERE id=%d", seg, value, id);
	if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) !=SQLITE_OK)
	{
		fprintf(stderr, "line:%d sqlite3_exec:%s\n", __LINE__, errmsg);
		return ;
	}
	printf("更新成功\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值