当前位置: 首页 > news >正文

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

 将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;
}
*/

相关文章:

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

将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){…...

nginx 代理postgresql

首先&#xff0c;Nginx为我们的数据库增加了额外的安全层。Nginx提供了一整套的选项&#xff0c;这使得管理访问和保护数据库变得很容易。例如&#xff0c;我们可以配置为只有一小部分IP地址可以访问数据库。 PostgreSQL不使用HTTP或HTTPS&#xff0c;而是使用一个新块儿strea…...

小程序 CSS-in-JS 和原子化的另一种选择

小程序 CSS-in-JS 和原子化的另一种选择 小程序 CSS-in-JS 和原子化的另一种选择 介绍快速开始 pandacss 安装和配置 0. 安装和初始化 pandacss1. 配置 postcss2. 检查你的 panda.config.ts3. 修改 package.json 脚本4. 全局 css 注册 pandacss5. 配置的优化与别名 weapp-pand…...

flutter项目 环境搭建

开发flutter项目 搭建工具环境 flutter项目本身 所需开发工具环境 flutter 谷歌公司开发 系统支持库 镜像库 搭建流程&#xff1a; flutter 官网&#xff1a; https://flutter.dev/community/china //步骤1 .bash_profile touch .bash_profile pwd /Users/haijunyan open ~ e…...

PG-DBA培训12:PostgreSQL物理备份与恢复实战

一、风哥PG-DBA培训12&#xff1a;PostgreSQL物理备份与恢复实战 课程目标&#xff1a; 本课程由风哥发布的基于PostgreSQL数据库的系列课程&#xff0c;本课程属于PostgreSQL备份恢复与迁移升级阶段之PostgreSQL物理备份与恢复实战&#xff0c;学完本课程可以掌握&#xff1…...

饿了么大数据开发凉经

1 一个mapreduce进程会启动多少map进程多少reduce进程* 1&#xff09;map数量由处理的数据分成的block数量决定default_num total_size / split_size; 2&#xff09;reduce数量为job.setNumReduceTasks(x)中x 的大小。不设置的话默认为 1。 2 讲下shuffle的过程 shuffle分为…...

前端安全:XSS 与 CSRF 安全防御

在当今数字化的时代&#xff0c;前端安全性变得愈发重要。跨站脚本攻击&#xff08;XSS&#xff09;和跨站请求伪造&#xff08;CSRF&#xff09;是常见的前端安全威胁&#xff0c;但通过一些简单的防御策略&#xff0c;我们可以有效地保护我们的应用程序和用户信息。本文将为您…...

应用层读取wfp防火墙阻断记录

前言 之前的文档中&#xff0c;描写了如何对WFP防火墙进行操作[链接在此]&#xff0c;这篇文档中&#xff0c;描述如何获取WFP防火墙进行阻断的操作记录。 需要注意的坑点 使用FWPM_NET_EVENT_TYPE获取防火墙日志时&#xff0c;需要注意&#xff0c;只有丢弃和内核丢弃&…...

web基础和tomcat的安装,部署jpress应用

目录 1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8&#xff0c;配置服务启动脚本&#xff0c;部署jpress应用。 1. 简述静态网页和动态网页的区别。 【1】定义区别 请求响应信息&#xff0c;发给客户端进行处理&#xff0c;由浏览…...

idea git命令使用

这个标签标识单签分支&#xff1a;&#xff08;标签图标&#xff09; 标识关联分支&#xff1a;&#xff08;五角星&#xff09; 本地切换分支&#xff1a;如当前分支是dev ,git branch 显示的是dev ,然后通过 git checkout -b release 切换到release分支 git checkout re…...

软件测试技术之单元测试—工程师 Style 的测试方法

什么是单元测试&#xff1f; Wikipedia 对单元测试的定义&#xff1a; 在计算机编程中&#xff0c;单元测试&#xff08;Unit Testing&#xff09;又称为模块测试&#xff0c;是针对程序模块&#xff08;软件设计的最小单位&#xff09;来进行正确性检验的测试工作。 在实际…...

C#学习....

1.基础 //引用命名空间using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;//项目名或者命名空间 namespace _01_MY_First_Demo {//Program类class Program{//程序的主入口或者Main函数static void Main(S…...

C语言暑假刷题冲刺篇——day2

目录 一、选择题 二、编程题 &#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C语言每日一练 ✨其他专栏&#xff1a;代码小游戏C语言初阶&#x1f91d;希望作者的文章能对你…...

springcloud3 hystrix实现服务降级的案例配置2

一 服务降级的说明 1.1 服务降级说明 "服务器忙&#xff0c;请稍后在试"不让客户达等待&#xff0c;立即返回一个友好的提示。 1.2 服务降级的触发情况 1.程序运行异常&#xff1b; 2.超时&#xff1b; 3.服务熔断触发服务降级&#xff1b;4 .线程池/信号量打…...

第 3 章 稀疏数组和队列(1)

3.1 稀疏 sparsearray 数组 3.1.1先看一个实际的需求 编写的五子棋程序中&#xff0c;有存盘退出和续上盘的功能。 分析问题: 因为该二维数组的很多值是默认值 0.因此记录了很多没有意义的数据.->稀疏数组 3.1.2基本介绍 当一个数组中大部分元素为 0&#xff0c;或者为同…...

7-10 奇偶分家

分数 10 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 给定N个正整数&#xff0c;请统计奇数和偶数各有多少个&#xff1f; 输入格式&#xff1a; 输入第一行给出一个正整N&#xff08;≤1000&#xff09;&#xff1b;第2行给出N个非负整数&#xff0c;以空格分隔。 输…...

使用词向量以数学方式查找具有相似含义的单词

摄影&#xff1a;Nika Charakova 一、说明 简而言之&#xff0c;词向量只不过是表示自然语言词含义的一系列实数。这项技术是有用的NLP功能的重要推动力&#xff0c;使机器能够“理解”人类语言。本文讨论如何使用词向量以编程方式计算文本的语义相似性&#xff0c;例如&#x…...

opencv实现以图搜图

这里写目录标题 1. 步骤1.1 导入OpenCV库&#xff1a;1.2 加载图像1.3 提取特征1.4 匹配特征1.5 显示结果 2. 完整代码3. 测试图片及效果 1. 步骤 1.1 导入OpenCV库&#xff1a; 在您的C代码中&#xff0c;首先需要导入OpenCV库。您可以使用以下语句导入核心模块&#xff1a;…...

爬虫工作中代理失效了怎么处理?

Hey&#xff01;亲爱的爬虫小伙伴们&#xff0c;是不是经常在爬虫的工作中遇到代理IP失效的问题&#xff1f;别着急&#xff0c;今天我来分享一些应对代理失效的妙招&#xff01;这些方法简单易行&#xff0c;让你爬虫顺利进行. 一、为什么代理会失效&#xff1f; 在爬虫过程…...

使用虚拟环境conda安装不同版本的cuda,cudnn,pytorch

背景&#xff1a;在学习深度学习时&#xff0c;我们不可避免的需要跑多个神经网络&#xff0c;而不同的神经网络环境都不一样&#xff0c;所以必须要使用到虚拟环境(如conda)去做环境隔离&#xff0c;安装属于自己的环境。在这环境中&#xff0c;大多神经网络都必须要用到cuda&…...

别死磕Datasheet了!用ADI官方ADF435x软件工具,5分钟搞定频点计算与寄存器配置

告别手动计算&#xff1a;ADI官方ADF435x工具的高效频点配置指南 在射频电路设计中&#xff0c;频率合成器的配置往往是工程师面临的第一个挑战。ADF4350作为业界广泛使用的宽带频率合成器芯片&#xff0c;其强大的性能背后是复杂的寄存器配置体系。传统方法依赖Datasheet中的公…...

别再只改项目属性了!彻底搞懂Visual Studio平台工具集(Platform Toolset)和MSB8020错误的根治方法

深入解析Visual Studio平台工具集&#xff1a;从MSB8020错误到构建系统精要 当你在Visual Studio中打开一个历史项目时&#xff0c;是否曾被突如其来的MSB8020错误打断工作流程&#xff1f;这个看似简单的"找不到生成工具"提示背后&#xff0c;隐藏着Visual Studio构…...

PyTorch模型调优第一步:用TorchSummary分析参数量与计算开销(以CNN/Transformer为例)

PyTorch模型调优第一步&#xff1a;用TorchSummary分析参数量与计算开销&#xff08;以CNN/Transformer为例&#xff09; 在深度学习项目从实验阶段走向生产部署的过程中&#xff0c;模型效率往往成为决定成败的关键因素。当我们完成模型架构设计后&#xff0c;第一个需要回答的…...

启动我进入数据科学的那一个思维方式转变

原文&#xff1a;towardsdatascience.com/the-one-mindset-change-that-launched-me-into-data-science-3f72bd1df46f?sourcecollection_archive---------2-----------------------#2024-10-19 让它成为现实&#xff1a;微小的改变帮助你进入数据科学或任何梦想职业 https://…...

告别手写UI!用VSCode+QtDesigner+PyQt5,5分钟搞定你的第一个Python图形界面

5分钟极速构建Python GUI&#xff1a;VSCodeQtDesignerPyQt5全流程实战 每次看到同事用代码逐行构建UI界面时&#xff0c;总忍不住想起自己初学时的痛苦经历——调整一个按钮位置要反复运行程序&#xff0c;修改边距像素值就像在玩"猜数字"游戏。直到发现QtDesigner这…...

并发编程小记1

什么时候用单线程&#xff0c;什么时候用多线程&#xff1f;图里展示了一个典型的网络请求场景&#xff1a;左侧处理耗时&#xff1a;1ms网络请求往返耗时&#xff1a;25ms 25ms 50ms右侧处理耗时&#xff1a;2ms整个流程总耗时&#xff1a;1ms 25ms 2ms 25ms 53ms这里的…...

Windows远程桌面终极解锁指南:RDP Wrapper完整使用方案

Windows远程桌面终极解锁指南&#xff1a;RDP Wrapper完整使用方案 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版无法使用远程桌面而烦恼吗&#xff1f;是否曾经羡慕专业版用户能够享受多用户…...

全志V853开发板适配7寸RGB屏:Linux DRM驱动与设备树配置实战

1. 项目概述与核心价值最近在折腾百问网的100ASK_V853-PRO开发板&#xff0c;这块板子用的是全志V853这颗高性能的AIoT芯片&#xff0c;本身接口资源挺丰富的。但官方默认的配套屏幕是5寸或者更小的MIPI屏&#xff0c;对于很多需要大屏交互的应用场景&#xff0c;比如智能中控、…...

OFDM仿真(Matlab)项目推荐:深入理解与掌握正交频分复用技术

OFDM仿真(Matlab)项目推荐&#xff1a;深入理解与掌握正交频分复用技术 【下载地址】OFDM仿真matlab完整可运行 本资源提供了一个完整的OFDM&#xff08;正交频分复用&#xff09;仿真代码&#xff0c;基于Matlab平台开发。该仿真代码包含了OFDM系统中的多个关键模块&#xff0…...

JetBrains IDE试用期重置终极指南:三步实现无限开发体验

JetBrains IDE试用期重置终极指南&#xff1a;三步实现无限开发体验 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而烦恼吗&#xff1f;ide-eval-resetter是你的理想解决方案&…...