通过C实现sqlite3操作,导入电子词典

news2024/9/27 12:12:01
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlite3.h>
int main(int argc, const char *argv[])
{
	//创建并打开一个数据库
	sqlite3 *db = NULL;
	if(sqlite3_open("./dict.db",&db) != SQLITE_OK)
	{
		printf("sqlite3_open:%s %d __%d__\n",\
				sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
		return -1;
	}
	printf("open database my.db success\n");

	//创建一个表格 create table stu (id int,name char,score float);
	//数据库中sql语句怎么写,这里就怎么写
	char sql[128] = "create table if not exists dict (word char,mean char);";
	char* errmsg = NULL;

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

	//打开文件
	FILE* fp = fopen("./dict.txt","r");
	if(NULL == fp)
	{
		perror("fopen");
		return -1;
	}

	//循环读取文件中的数据,一行一行的读取
	char buf[256] = "";
	char word[32] = "";
	char mean[200] = "";
	int count = 1;
	int i =0;
	char* ptr = NULL;

	while(1)
	{
		if(fgets(buf,sizeof(buf),fp) == NULL)
			break;
		buf[strlen(buf)-1] = 0;

		//分离单词和意思
		bzero(word,sizeof(word));
		bzero(mean,sizeof(mean));

		//获取" "子串在buf中的地址
		ptr = strstr(buf," ");
		if(NULL == ptr)
		{
			printf("没有找到对应子串\n");
			break;
		}
		strncpy(word,buf,ptr-buf);    //" "子串前面是单词
		strcpy(mean,ptr+3);           //" "子串后面是意思

		//插入到数据库中
		sprintf(sql,"insert into dict values(\"%s\",\"%s\");",word,mean);
		if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
		{
			printf("sqlite3_exec failed:%s __%d__\n",errmsg,__LINE__);
			return -1;
		}
	}

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

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

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

相关文章

Python“牵手”一号店商品详情API接口运用场景及功能介绍,一号店接口申请指南

一号店是中国首家网上超市&#xff0c;由世界500强副董事长于刚创建。一号店扎根于中国广大的消费市场&#xff0c;以经营吃、喝、拉、撒、睡等人的基本生活工作等用品为主&#xff0c;运用互联网经营&#xff0c;线下配送的模式&#xff0c;打造了属于一号店的经营模式。 一号…

【Unity3D赛车游戏】【三】如何将汽车进入驱动模式——四驱,二驱转换

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

Windows下python(conda)加载spatialite模板

如果在python调用spatialite的函数&#xff0c;报错no such function: MBRContains,ST_Contains,python则需要加载spatialite扩展: 共两步&#xff1a; 1、先在The Gaia-SINS federated project home-pageThe Gaia-SINS federated project home-pageThe Gaia-SINS federated …

真伪定时器

首先观察一下下面两组代码区别在哪里&#xff1f; 第一组代码 setInterval(() > {// 1.5s 的同步逻辑 }, 1000);第二组代码 function fn() {setTimeout(() > {// 1.5s 的同步逻辑fn();}, 1000); }fn();两组代码都有定时功能&#xff0c;看起来也都是每隔1s执行一次任务…

javaweb项目部署linux服务器遇到的问题

其他有关本次部署内容请参考本站其他文章 javaweb项目要用war包 IntelliJ IDEA 可以打包out里的子目录 D:\D盘文件\浏览器\webshop\out\artifacts\webshop_war_exploded>jar cvf webshop.war * 方法来源视频 18、web项目的打包与发布_哔哩哔哩_bilibili myeclipse项目…

为应用程序接入阿里云CDN优化网站访问速度

文章目录 1.KodCloud云盘系统接入CDN之前的效果2.配置KodCloud云盘接入CDN加速器2.1.添加CDN域名2.2.配置域名信息2.3.CDN推荐配置设置2.4.CDN加速器配置完成 3.配置云解析DNS增加CDN域名的解析4.为CDN加速器配置HTTPS5.验证网站是否接入CDN6.访问应用程序观察请求速度7.观察CD…

揭秘Stable Diffusion技术构建的未来人机识别模型

最近&#xff0c;AI 图像生成十分火热&#xff0c;当我们给它一个文本提示&#xff08;text prompt&#xff09;时&#xff0c;它将返回与文本匹配的图像&#xff0c;从而生成各种我们想要的图像。除了根据文本生产图像以外&#xff0c;它还可以用于图像修复、图像绘制、图像替…

【附安装包】MyEclipse2020安装教程

软件下载 软件&#xff1a;MyEclipse版本&#xff1a;2020语言&#xff1a;简体中文大小&#xff1a;1.61G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a;https://pan.baidu.co…

adb shell setprop 、开发者选项

App性能调试详解 Android App性能监控工具 更多系统属性参考 一、开启 GPU Render 的profiling bar&#xff1a; Gpu渲染速度 adb shell setprop debug.hwui.profile true adb shell setprop debug.hwui.profile visual_bars adb shell setprop debug.hwui.profile visual…

opencv-答题卡识别判卷

#导入工具包 import numpy as np import argparse import imutils import cv2# 设置参数 ap argparse.ArgumentParser() ap.add_argument("-i", "--image", requiredTrue,help"path to the input image") args vars(ap.parse_args())# 正确答案…

HDLBits-Verilog学习记录 | Verilog Language-Modules(1)

文章目录 20.Module21.Connecting ports by position | Moudle pos22.Connecting ports by name | Module name23.Three modules | Module shift24.Modules and vectors | Module shift8 20.Module practice:You may connect signals to the module by port name or port posi…

一百六十四、Kettle——Linux上脚本运行kettle的转换任务(Linux本地、Linux资源库)

一、目的 在kettle的转换任务以及共享资源库、Carte服务创建好后&#xff0c;需要对kettle的转换任务用海豚调度器进行调度&#xff0c;调度的前提的写好脚本。所以&#xff0c;这篇博客首先介绍在Linux上脚本运行kettle的转换任务 二、前提准备 &#xff08;一&#xff09;…

运算放大器发展史

在内部集成了一个补偿电容 MPS公司OP07推出后&#xff0c;大受欢迎。各家厂商都推出了自己的 这4款都是可以替换的

Apache StreamPark系列教程第二篇——项目打包和开发

一、项目打包 项目依赖maven、jdk8.0、前端(node、npm) //下载代码 git clone//maven打包相关内容 mvn -N io.takari:maven:wrapper //前端打包相关内容 curl -sL https://rpm.nodesource.com/setup_16.x | bash - yum -y install nodejs npm -v npm install -g pnpm默认是h2…

小兔鲜儿 - 推荐模块

目录 动态获取数据 静态结构 获取页面参数​ 获取数据​ 类型声明 热门推荐 – 渲染页面和Tab交互 热门推荐 – 分页加载 热门推荐 – 分页条件 type 和 interface 的区别 type 和 interface 的相似之处 type 的特点和用途 interface 的特点和用途 何时使用 type…

基于JAVA SpringBoot和UniAPP的宠物服务预约小程序

随着社会的发展和人们生活水平的提高&#xff0c;特别是近年来&#xff0c;宠物快速进入人们的家中&#xff0c;成为人们生活中重要的娱乐内容之一&#xff0c;过去宠物只是贵族的娱乐&#xff0c;至今宠物在中国作为一种生活方式得到了广泛的认可&#xff0c;随着人们精神文明…

Spring---Bean的生命周期

目录 何为Spring生命周期 Bean的生命周期 生命周期图 生命周期的流程 Spring Bean的单列与多列的作用域 单例Bean的配置方式 注解方式 XML方式 单列案列 后端Servlet 测试类 Spring Config文件配置 何为Spring生命周期 Bean的生命周期 对于一个Bean的生命周期&#xff…

SpringBoot集成Mybatis-Plus增删改查

一、前言 Mybatis&#xff1a;数据持久化框架Mybatis-Plus&#xff1a;对Mybatis进行了增强&#xff0c;它封装了基本的增删改查操作&#xff0c;使我们自己不需要再去写很多重复的代码&#xff0c;大大解放了生产力&#xff01; 二、创建项目 创建成功后删除src下面的test目…

iTwin Capture Modeler中文版安装包 图文安装教程

iTwin Capture Modeler中文版安装包图文安装教程 一、下载软件 您可以登录官网下载ITwin Capture模型 https://www.bentley.com/zh-Hans 当然也可以在下面的评论区或者后台私信我 选择 二、安装程序 侧面下载的安 上传的安装文件 运行 Bentley iTwin Capture Modeler x64 .…

6.oracle中listagg函数使用

1. 作用 可以实现行转列&#xff0c;将多列数据聚合为一列&#xff0c;实现数据的压缩 2. 语法 listagg(measure_expr&#xff0c;delimiter) within group ( order by order_by_clause); 解释&#xff1a; measure_expr可以是基于任何列的表达式 delimiter分隔符&#xff0c…