在ubuntu中将dict.txt导入到数据库sqlite3

news2024/11/19 17:46:22

 将dict.txt导入到数据库

#include <head.h>
#include <sqlite3.h>
int do_insert(int i,char *str,sqlite3 *db);
int main(int argc, const char *argv[])
{
	//创建泵打开一个数据库
	sqlite3 *db = NULL;
	if(sqlite3_open("./my.db",&db) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("打开数据库my.db成功\n");

	//创建一个表格 在sqlite中 create table stu (字段名 类型,字段名 类型~~~~);
	char sql[128] = "create table if not exists dict (id int primary key, words char, translate char);";
	char *errmsg = NULL;
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("create table dict success\n");
	
	//以读的方式打开dict.txt文件
	FILE *fp = fopen("./dict.txt","r");
	int i = 1;
	char buf[128] = "";
	while(1)
	{
		if(fgets(buf,sizeof(buf),fp) == NULL)
		{
			break;
		}
		do_insert(i++,buf,db);
		bzero(buf,sizeof(buf));
	}

	//关闭数据库
	if(sqlite3_close(db) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_close:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("数据库关闭成功\n");
	fclose(fp);
	return 0;
}

//插入(全文字段插入)
int do_insert(int i,char *str,sqlite3 *db)
{
	char sql[128] = "";
	sprintf(sql,"insert into dict values (%d, \"%s);",i,str);
	char *errmsg = NULL;
	char *p =NULL;
	int n = strlen(sql);
	sql[n-3] = '"';
	for(int j=32;j<=strlen(sql);j++)
	{
		if(sql[j] == ' ')
		{
			sql[j]='"';
			sql[j+1]=',';
			sql[j+2]='"';
			break;

		}
	}

	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:[%d] %s __%d__\n",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("%d insert into dict values success\n",i);

	return 0;
}

dict文件(部分)

 

 

 结果为:

 一些不成熟的功能

#include <head.h>
#include <sqlite3.h>
int do_insert(sqlite3 *db);
int	do_delete(sqlite3 *db);
int do_update(sqlite3 *db);
//int do_select(sqlite3 *db);
int main(int argc, const char *argv[])
{
	//创建泵打开一个数据库
	sqlite3 *db = NULL;
	if(sqlite3_open("./my.db",&db) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("打开数据库my.db成功\n");

	//创建一个表格 在sqlite中 create table stu (字段名 类型,字段名 类型~~~~);
	char sql[128] = "create table if not exists dict (id int primary key, words char, translate char);";
	char *errmsg = NULL;
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("create table dict 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(db);
			break;
		case '5':
			goto END;
		default:
			printf("输入无效,请重新输入>>> ");
		}

	}



END:
	//关闭数据库
	if(sqlite3_close(db) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_close:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("数据库关闭成功\n");
	return 0;
}

//插入(全文字段插入)
int do_insert(sqlite3 *db)
{
	int id = 0;
	char words[128] = "";
	char translate[128] = "";
	char sql[128] = "";
	printf("输入序号 单词 解释\n");
	scanf("%d %s %s",&id,words,translate);
	while(getchar() != 10);
	sprintf(sql,"insert into dict values (%d, '%s', '%s');",id,words,translate);
	char *errmsg = NULL;
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("insert into dict values success\n");

	return 0;
}

//删除表格中所有的数据
int	do_delete(sqlite3 *db)
{
	char table[128] = "";
	char sql[128] = "";
	printf("输入要删除记录的表格\n");
	scanf("%s",table);
	while(getchar() != 10);
	sprintf(sql,"delete from %s;",table);
	char *errmsg = NULL;
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("delete from %s success\n",table);

	return 0;
}

//修改表格中记录以id号为限制条件
int do_update(sqlite3 *db)
{
	char table[128] = "";
	int id = 0;
	char words[128] = "";
	char sql[128] = "";
	printf("请输入要修改的表格,该修改为修改单词,所以输入格式为表格名称 序号 单词\n");
	scanf("%s %d %s",table,&id,words);
	while(getchar() != 10);
	sprintf(sql,"update %s set words='%s' where id=%d;",table,words,id);
	char *errmsg = NULL;
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("update success\n");

	return 0;
}
/*
//查看所有记录
int do_select(sqlite3 *db)
{
	printf("请输入要查看的表格\n");
	char table[128] = "";
	char sql[128] = "";
	scanf("%s",table);
	while(getchar() != 10);
	sprintf(sql,"select * from %s;",table);
	char *errmsg = NULL;

	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec:[%d] %s __%d__",\
				sqlite3_errcode(db),sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("select success\n");

	return 0;
}
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+vue项目在国产机东方通部署详细教程!

文章目录 一、部署东方通TongWeb二、部署TongHttpServer三、springboot多模块后端打包四、vue前端打包&#xff08;TongWeb部署&#xff09;五、TongWeb部署&#xff08;前后端一样&#xff09; 一、部署东方通TongWeb 上传安装包&#xff1a;TongWeb7.0.4.9_Enterprise_Linux.…

Java内存区域(运行时数据区域)和内存模型(JMM)

Java 内存区域和内存模型是不一样的东西&#xff0c;内存区域是指 Jvm 运行时将数据分区域存储&#xff0c;强调对内存空间的划分。 而内存模型&#xff08;Java Memory Model&#xff0c;简称 JMM &#xff09;是定义了线程和主内存之间的抽象关系&#xff0c;即 JMM 定义了 …

随机改名并一键导出表格,让你的文件整理更高效

在日常工作中&#xff0c;文件的命名和归类是一个常见的繁琐任务。随着文件数量的不断增加&#xff0c;手动改名和整理变得异常耗时且容易出错。但是&#xff0c;现在有了一款创意文件改名归类利器&#xff0c;让你能够轻松将文件随机改名并一键导出表格&#xff0c;让文件整理…

Google Earth中的KML文件转换为CSV文件存放经纬度

最近进行一个小工作是在google earth中选择一系列点坐标,然后保存为csv文件或txt文件。我在Google Earth Pro在左上方的“文件”–>“保存”–>“将位置另存为”选项。 弹出的窗口中只有“kmz”与“kml”两种格式,这两种格式均是google earth内置的格式(KMZ文件是KML的…

运动路径规划,ROS发布期望运动轨迹

目录 一、Python实现&#xff08;推荐方法&#xff09; 1.1代码cubic_spline_path.py 1.2使用方法 二、C实现 参考博客 想让机器人/智能车无人驾驶&#xff0c;要有期望路径&#xff0c;最简单的是一条直线&#xff0c;或者是一条光滑曲线。 生成路径的方法有两种&#xf…

RSA加密解密算法原理以及实现

文章目录 前言一、RSA加密算法是什么&#xff1f;加密过程1、选择一对不相等且足够大的质数2、计算p、q的乘积3、计算n的欧拉函数4、选择一个与 φ ( n ) \varphi(n) φ(n)互质的整数e5、计算出e对于 φ ( n ) \varphi(n) φ(n)的模反元素d6、将e、n公开作为公钥进行加密7、将d…

步入React正殿 - 生命周期

目录 资料 三个阶段的生命周期函数 创建阶段 初始化阶段constructor 挂载阶段componentWillMount 挂载阶段render 挂载阶段componentDidMount 更新阶段【props或state改变】 更新阶段componentWillReceiveProps 更新阶段shouldComponentUpdate【可不使用&#xff0c;…

Mysql事务篇——Day02

Mysql事务篇——Day02 事务有哪些特性并发事务引发的问题脏读不可重复读幻读 事务隔离级别Read View 在 MVCC里如何工作 事务有哪些特性 事务是依赖MySQL的储存引擎是实现的&#xff0c;我们常见的Innodb引擎就是支持事务的。 不过并不是所有的存储引擎都可以支持事务&#xf…

SecureCRT8.5安装教程

第一步&#xff1a; 将文件下载解压 第二步&#xff1a; 双击进行安装&#xff0c;或者右键以管理员的方式运行 第三步&#xff1a; 直接点下一步 第四步&#xff1a; 选择接受协议&#xff0c;然后点下一步 第五步&#xff1a; 我这里选择所有用户&#xff0c;然后点下一…

js实现按创建时间戳1609459200000 开始往后开始显示运行时长-demo

运行时长 00日 00时 17分 59秒 代码 function calculateRuntime(timestamp) {const startTime Date.now(); // 获取当前时间戳//const runtimeElement document.getElementById(runtime); // 获取显示运行时长的元素function updateRuntime() {const currentTimestamp Date…

spring入门基本介绍及注入方式---详细介绍

一&#xff0c;spring的简介 Spring是一个开源框架&#xff0c;它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 提供了许多功能强大且易于使用的特性&#xff0c;使得开发者能够更加轻松地构建可维护且可扩展的应用程序&#xff0c;简单来说: Spring使用基…

攻击LNMP架构Web应用

环境配置(centos7) 1.php56 php56-fpm //配置epel yum install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm//安装php56&#xff0c;php56-fpm及其依赖 yum --enablereporemi install php56-php yum --enablereporemi install php…

深入了解唯品会API及其应用

随着电商行业的快速发展&#xff0c;API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;已经成为许多企业实现系统对接、数据交换和功能扩展的重要工具之一。唯品会作为国内领先的电商平台之一&#xff0c;也提供了丰富的API接口&#xff…

component:()=>import(“@/views/Home.vue“) 报错,ts说没有找到类型声明文件

1 没有写.vue文件的类型声明&#xff0c;要在env.d.ts文件中写.vue的类型声明文件 2 ts.config.josn的incluede字段中&#xff0c;没有把.d.ts文件的路径写对。 如果没写对&#xff0c;就会在项目启动的时候&#xff0c;找不到.d.ts文件。找不到类型声明文件

【自动电压调节器】无功功率控制的终端电压控制研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) 二、CVE-2017-15031 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) Title 未初始化或保存/恢复PMCR_EL0可能会泄露安全世界的时间信息 CVE ID CVE-2017-1503…

cs231n assignment 3 Q2 Image Captioning with Vanilla RNNs

文章目录 嫌啰嗦直接看代码Q2 Image Captioning with Vanilla RNNs一个给的工具代码里的bug问题展示问题解决思路解决办法 rnn_step_forward题面解析代码输出 rnn_step_backward题面解析代码输出 rnn_forward题面解析代码输出 rnn_backward题面解析代码输出 word_embedding_for…

时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍…

leetcode 518. 零钱兑换 II

本题是背包问题系列的完全背包问题&#xff0c;和0-1背包唯一的区别就在于&#xff1a;物品是可以重复选取的。 经过之前背包问题的拷打&#xff0c;本题也是一遍AC了。 接下来将给出二维和一维两种做法。 二维dp数组做法&#xff1a; 本题的背包大小即为题中给出的总金额&am…

与微软Office抗衡,两大巨头布局,打造新办公软件,再上新台阶

办公软件是我们日常工作中不可或缺的工具。 除了广为人知的微软Office套件外&#xff0c;近几年来&#xff0c;中国市场有许多优秀的国产办公软件抢眼登场&#xff0c;这些软件在提高工作效率、简化工作流程方面发挥着重要作用。 简单介绍几款值得知道的国产办公软件&#xff…