sqlite3数据库的实现

sqlite3代码实现数据库的插入、删除、修改、退出功能

cpp 复制代码
#include <head.h>
#include <sqlite3.h>
#include <unistd.h>
int do_insert(sqlite3 *db);
int do_delete(sqlite3 *db);
int do_update(sqlite3 *db);

int main(int argc, const char *argv[])
{
	sqlite3 *db = NULL;
	if(sqlite3_open("./my.db",&db) != SQLITE_OK)
	{
		fprintf(stdin,"sqlite3_open:%s %d",\
				sqlite3_errmsg(db),sqlite3_errcode(db));
		return -1;
	}
	printf("sqlite3_open success\n");

	char sql[128] = "create table if not exists Dictionary (word char,TRANSLATORS char)";
	char *errmsg = NULL;
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:%s %d",errmsg,sqlite3_errcode(db));
		return -1;
	}
	printf("create table Dictionary success\n");

	char choose = 0;
	while(1)
	{
		printf("**********************\n");
		printf("********1.插入********\n");
		printf("********2.删除********\n");
		printf("********3.修改********\n");
		printf("********4.退出********\n");
		printf("**********************\n");


		printf("请输入>>> ");
		scanf("%s",&choose);
		getchar();

		switch(choose)
		{
		case '1': do_insert(db); break;
		case '2': do_delete(db); break;
		case '3': do_update(db); break;
		case '4': goto END; 	 break;
		default:printf("输入错误,请重新输入\n");
		}
	}

END:
	if(sqlite3_close(db) != SQLITE_OK)
	{
		fprintf(stdin,"sqlite3_close:%s %d",\
				sqlite3_errmsg(db),sqlite3_errcode(db));
		return -1;
	}
	return 0;
}
int do_update(sqlite3 *db)
{
	if(sqlite3_open("./my.db",&db) != SQLITE_OK)
	{
		fprintf(stdin,"sqlite3_open:%s %d",\
				sqlite3_errmsg(db),sqlite3_errcode(db));
		return -1;
	}
	char buf[128] = "";
	char buf_w[128] = "";
	printf("请输入要修改的单词>>> ");
	scanf("%s",buf);
	printf("请输入要修改单词的翻译>>> ");
	scanf("%s",buf_w);
	char *errmsg;
	char sql[128] = "";
	sprintf(sql,"update Dictionary set TRANSLATORS='%s' where word='%s'",buf,buf_w);
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:%s %d\n",errmsg,sqlite3_errcode(db));
		return -1;
	}
	printf("do_update success\n");
	return 0;
}
int do_insert(sqlite3 *db)
{
	if(sqlite3_open("./my.db",&db) != SQLITE_OK)
	{
		fprintf(stdin,"sqlite3_open:%s %d",\
				sqlite3_errmsg(db),sqlite3_errcode(db));
		return -1;
	}
	char *errmsg;
	char sql[128] = "";
	char buf_word[128] = "";
	char buf_TRAN[128] = "";
	printf("请输入单词>>> ");
	scanf("%s",buf_word);
	printf("请输入翻译>>> ");
	scanf("%s",buf_TRAN);
	sprintf(sql,"insert into Dictionary values ('%s','%s')",buf_word,buf_TRAN);
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:%s %d\n",errmsg,sqlite3_errcode(db));
		return -1;
	}
	printf("do_insert success\n");
	return 0;
}
int do_delete(sqlite3 *db)
{
	if(sqlite3_open("./my.db",&db) != SQLITE_OK)
	{
		fprintf(stdin,"sqlite3_open:%s %d",\
				sqlite3_errmsg(db),sqlite3_errcode(db));
		return -1;
	}
	char *errmsg;
	char buf[128] = "";
	printf("请输入要删除的单词>>> ");
	scanf("%s",buf);
	char sql[128] = "";
	sprintf(sql,"delete from Dictionary where word='%s'",buf);
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:%s %d\n",errmsg,sqlite3_errcode(db));
		return -1;
	}
	printf("do_delete success\n");


}
相关推荐
KIDULT°5 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
我不是程序员三三5 小时前
透明加密软件偶发解密异常排错实录:文件时能打开时乱码
数据库·域智盾
snhna5 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
天行健,君子而铎6 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
网络·数据库·安全
牛战士coding6 小时前
MySQL 读写分离完整链路:主从复制、多数据源与 @DS 路由
数据库·mysql
goehou7 小时前
MCP 查数实战:让 LLM 安全地查数据库(只读账号、SQL 校验、参数漂移)
数据库·ai·llm·教程·mcp·function calling
我不会插花弄玉7 小时前
7.函数【由浅入深-MySQL】
android·数据库·mysql
周小董8 小时前
[1369]Windows上安装PostgreSQL
数据库·windows·postgresql
一只积极向上的小咸鱼10 小时前
第一性原理思考:从拆解问题到用实验检验答案
数据库
这个DBA有点耶10 小时前
时序数据库InfluxDB高基数问题深度拆解:内存索引膨胀机制与OOM完整链路
数据库·架构·dba