2023-1-5作业

使用sqlite3的C-APIs,用C语言实现数据库的插入、删除、修改等功能

代码实现如下:

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

//全字段插入
void do_insert(sqlite3*db);
//删除记录
void do_delete(sqlite3*db);
//修改记录
void do_update(sqlite3*db);
//查询记录
void do_select(sqlite3*db);

int main(int argc, const char *argv[])
{
	//创建并打开一个数据库
	sqlite3 *db = NULL;
	if(sqlite3_open("./sq.db", &db) != SQLITE_OK)
	{
		fprintf(stderr, "sqlite3_open failed:%d %s\n",\
				sqlite3_errcode(db), sqlite3_errmsg(db));
		return -1;
	}
	printf("sqlite3_open success\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 failed: %s\n", __LINE__, errmsg);
		return -1;
	}
	printf("table stu create success\n");

	char choose = 0;
	while(1)
	{
		printf("--------------------------\n");
		printf("----------1.插入----------\n");
		printf("----------2.删除----------\n");
		printf("----------3.修改----------\n");
		printf("----------4.查询----------\n");
		printf("----------5.退出----------\n");
		printf("--------------------------\n");
		printf("请输入>>>");
		choose = getchar();
		while(getchar() != 10);

		switch(choose)
		{
		case '1':    
			do_insert(db); 		//插入
			break;
		case '2':
			do_delete(db); 		//删除
			break;
		case '3':
			do_update(db); 		//修改
			break;
		case '4':
			//do_select();
			break;
		case '5':
			goto END;
			break;
		default:
			printf("输入错误,请重新输入\n");
		}
		printf("输入任意字符清屏>>>");
		while(getchar() != 10)
			system("clear"); 	//清屏
	}

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

	return 0;
}

//全字段插入
void do_insert(sqlite3*db)
{
	int id = 0;
	char name[20] = "";
	float score = 0;
	char sql[128] = "";
	char *errmsg = NULL;

	printf("请输入id 姓名 成绩\n");
	scanf("%d %s %g", &id, name, &score);
	while(getchar() != 10);

	//拼接SQL命令
	sprintf(sql, "insert into stu values (%d, \'%s\', %g);", id, name, score);

	//运行SQL命令
	if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
	{
		fprintf(stderr, "line:%d sqlite3_exec failed: %s\n", __LINE__, errmsg);
		return ;
	}
	printf("insert values success\n");
}

//删除记录
void do_delete(sqlite3*db)
{
	int id = 0;
	char sql[128] = "";
	char *errmsg = NULL;

	printf("请输入要删除记录的id>>>");
	scanf("%d", &id);
	while(getchar() != 10);

	//拼接SQL命令
	sprintf(sql, "delete from stu where id=%d;", id);

	//运行SQL命令
	if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
	{
		fprintf(stderr, "line:%d sqlite3_exec failed: %s\n", __LINE__, errmsg);
		return ;
	}
	printf("delete values success\n");
}

//修改记录
void do_update(sqlite3*db)
{
	int id = 0;
	char name[20] = "";
	float score = 0;
	char update[30] = "";
	char sql[128] = "";
	char *errmsg = NULL;

	printf("请输入id>>>");
	scanf("%d", &id);
	while(getchar() != 10);

	printf("您需要修改(name/score)>>>");
	scanf("%s", update);
	while(getchar() != 10);

	printf("修改成>>>");
	if(strcmp(update, "name") == 0)
	{
		scanf("%s", name);
		while(getchar() != 10);
		//拼接SQL命令
		sprintf(sql, "update stu set %s=\'%s\' where id=%d;", update, name, id);
	}
	else if(strcmp(update, "score") == 0)
	{
		scanf("%g", &score);
		while(getchar() != 10);
		//拼接SQL命令
		sprintf(sql, "update stu set %s=%g where id=%d;", update, score, id);
	}

	//运行SQL命令
	if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
	{
		fprintf(stderr, "line:%d sqlite3_exec failed: %s\n", __LINE__, errmsg);
		return ;
	}
	printf("update values success\n");
}

运行结果如下:

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值