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

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

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

相关文章

【TI-CCS笔记】工程编译配置 bin文件的编译和生成 各种架构的Post-build配置汇总

【TI-CCS笔记】工程编译配置 bin文件的编译和生成 各种架构的Post-build配置汇总 TI编译器分类 在CCS按照目录下 有个名为${CG_TOOL_ROOT}的目录 其下就是当前工程的编译器 存放目录为&#xff1a; C:\ti\ccs1240\ccs\tools\compiler按类型分为五种&#xff1a; ti-cgt-arm…

2023年排行前五的大规模语言模型(LLM)

2023年排行前五的大规模语言模型(LLM) 截至2023年&#xff0c;人工智能正在风靡全球。它已经成为热门的讨论话题&#xff0c;吸引了数百万人的关注&#xff0c;不仅限于技术专家和研究人员&#xff0c;还包括来自不同背景的个人。人们对人工智能热情高涨的原因之一是其在人类多…

CS5263替代停产IT6561连接DP转HDMI音视频转换器ASL 集睿致远CS5263设计电路原理图

ASL集睿致远CS5263是一款DP1.4到HDMI2.0b转换器芯片&#xff0c;设计用于将DP1.4源连接到HDMI2.0b接收器。 CS5263功能特性&#xff1a; DP接口包括4条主通道、辅助通道和HPD信号。接收器支持每通道5.4Gbps&#xff08;HBR2&#xff09;数据速率。DP接收机结合了HDCP1.4和HDCP…

NVIDIA Omniverse与GPT-4结合生成3D内容

全球各行业对 3D 世界和虚拟环境的需求呈指数级增长。3D 工作流程是工业数字化的核心&#xff0c;开发实时模拟来测试和验证自动驾驶车辆和机器人&#xff0c;操作数字孪生来优化工业制造&#xff0c;并为科学发现铺平新的道路。 如今&#xff0c;3D 设计和世界构建仍然是高度…

C#的 Settings.Settings配置文件的使用方法

1、定义 在Settings.settings文件中定义配置字段。把作用范围定义为&#xff1a;User则运行时可更改(用户范围的字段数据更改存储在用户信息中&#xff0c;不在该程序文件中)&#xff0c;Applicatiion则运行时不可更改。可以使用数据网格视图(VS软件的Properties 下面的Setting…

常见的Redux问题

在React中使用Redux的面试题目通常涵盖了Redux的基本概念、工作原理、如何在React应用中集成Redux等方面。以下是一些常见的Redux问题&#xff1a; Redux的核心概念&#xff1a; 1、什么是Redux&#xff1f;它解决了什么问题&#xff1f; 它是一个状态管理库&#xff0c;解决…

2023国赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

个保新标 | 《信息安全技术 敏感个人信息处理安全要求》(征求意见稿)发布

8 月 9 日&#xff0c;全国信息安全标准化技术委员会公开发布关于国家标准《信息安全技术 敏感个人信息处理安全要求》&#xff08;征求意见稿&#xff09;&#xff08;以下简称《标准》&#xff09;的通知&#xff0c;面向社会广泛征求意见。 《标准》的制定背景是为支撑《个人…

《Go 语言第一课》课程学习笔记(一)

配好环境&#xff1a;选择一种最适合你的 Go 安装方法 选择 Go 版本 一般情况下&#xff0c;建议采用最新版本。因为 Go 团队发布的 Go 语言稳定版本的平均质量一直是很高的&#xff0c;少有影响使用的重大 bug。可以根据不同实际项目需要或开源社区的情况使用不同的版本。 有…

攻击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…

常见的字符编码有哪些?有什么区别?

目录 面试回答 知识扩展 Unicode 和 UTF-8 有啥关系&#xff1f; 有了 UTF-8&#xff0c;为什么要出现 GBK 为什么会出现乱码 面试回答 就像电报只能发出“滴”和“答”声一样&#xff0c;计算机只认为 0 和1 两种字符&#xff0c;但是&#xff0c;人类的文字是多种多样的&…

B树和B+树区别

B树和B树的区别 B树 B树被称为平衡树&#xff0c;在B树中&#xff0c;一个节点可以有两个以上的子节点。B树的高度为log M N。在B树中&#xff0c;数据按照特定的顺序排序&#xff0c;最小值在左侧&#xff0c;最大值在右侧。 B树是一种平衡的多分树&#xff0c;通常我们说m阶…

什么是网络地址转换 (NAT)

网络地址转换&#xff08;NAT&#xff09;是更改源和目标 IP 地址和端口的过程&#xff0c;地址转换减少了对 IPv4 公共地址的需求&#xff0c;并隐藏了专用网络地址范围&#xff0c;该过程通常由路由器或防火墙完成。 NAT是如何工作的 NAT 允许单个设备&#xff08;如路由器…

rhel 8.7 部署 keepalived+haproxy 实现 mysql 双主高可用场景

文章目录 [toc]部署 mysql关闭防火墙关闭 selinux创建相关目录创建 mysql 用户配置 PATH 变量验证 mysql 命令切换到 mysql 用户在 172.72.0.116 生成配置文件在 172.72.0.137 生成配置文件mysql 初始化启动 mysql 服务修改 mysql 的 root 用户密码配置主从关系172.72.0.137 配…

数字化格局下的引领者:百望云通过强制性国家标准GB18030-2022最高级别认证

8月1日,强制性国家标准GB 18030-2022《信息技术 中文编码字符集》实施。8月15日,百望云“绿页阅读器”正式通过中国电子技术标准化研究院强制性国家标准GB18030-2022《信息技术 中文编码字符集》最高级(实现级别3)认证,彰显了百望云在数字化信息处理领域对标国家标准的卓越技术…

Android CameraX适配Android13的踩坑之路

AndroidCameraX适配Android13的踩坑之路 前言&#xff1a; 最近把AGP插件升级到8.1.0&#xff0c;新建项目的时候目标版本和编译版本都是33&#xff0c;发现之前的demo使用Camerax拍照和录像都失败了&#xff0c;于是查看了一下官网和各种资料&#xff0c;找到了Android13的适…

网络编程(12): TCP重传、滑动窗口、流量控制、拥塞控制

1、TCP重传机制 通过序列号和确认号确保可靠传输&#xff0c;当发送端发送数据给接收到&#xff0c;接收端会返回一个确认号&#xff0c;表示收到消息了 超时重传&#xff1a;没有在指定时间内收到ACK报文 超时重传的两种可能&#xff1a;数据包丢失、确认包丢失超时重传时间RT…

第十三课:QtCmd 命令行终端应用程序开发

功能描述&#xff1a;开发一个类似于 Windows 命令行提示符或 Linux 命令行终端的应用程序 一、最终演示效果 QtCmd 不是因为它是 Qt 的组件&#xff0c;而是采用 Qt 开发了一个类似 Windows 命令提示符或者 Linux 命令行终端的应用程序&#xff0c;故取名为 QtCmd。 上述演示…

FreeMarker系列--list的用法(长度,遍历,下标,嵌套,排序)

原文网址&#xff1a;FreeMarker系列--list的用法&#xff08;长度,遍历,下标,嵌套,排序&#xff09;_IT利刃出鞘的博客-CSDN博客 简介 本文介绍FreeMarker的list的用法。 大小 Java ArrayList<String> list new ArrayList<String>(); Freemaker ${list?s…

W5500-EVB-PICO 做UDP Server进行数据回环测试(七)

前言 前面我们用W5500-EVB-PICO 开发板在TCP Client和TCP Server模式下&#xff0c;分别进行数据回环测试&#xff0c;本章我们将用开发板在UDP Server模式下进行数据回环测试。 UDP是什么&#xff1f;什么是UDP Server&#xff1f;能干什么&#xff1f; UDP (User Dataqram P…