将文件导入数据库

#include <stdio.h>
#include <sqlite3.h>
#include <string.h>

int main(int argc, const char *argv[])
{
    //打开数据库    
    sqlite3 *db = NULL;
    if(sqlite3_open("./dict.db",&db) != SQLITE_OK){
        printf("sqlite3_open error: %s __%d__",sqlite3_errmsg(db),__LINE__);
        return -1;
    }
    printf("create 数据库ok __%d__\n",__LINE__);
    //创建表格
    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){
        
        printf("sqlite3_exec error: %s __%d__\n",errmsg,__LINE__);
        return -1;
    }
    printf("createe sql ok __%d__\n",__LINE__);

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

    //读取dict.txt数据

    char buf[256]  = "";  //存数据
    char word[32]  = "";  //单词
    char mean[200] = "";  //意思

    while(1){
        if(fgets(buf,sizeof(buf),fp) == NULL) 
            break;             //从.txt中拿数据
        buf[strlen(buf)-1] = 0;
        
        bzero(word,sizeof(word));
        bzero(mean,sizeof(mean));   //清零

        //分离单词和意思
    
        for(int i=0;i<strlen(buf)-2;i++){
            //分离单词 
            if(buf[i] != ' ' && buf[i+1] == ' ' && buf[i+2] == ' '){
                strncpy(word,buf,i+1); //判断当前位置不是空格,下个位置是空格 以及下下个位置是空格
            }
            else if(buf[i] == ' ' && buf[i+1] == ' ' && buf[i+2] != ' '){
                strcpy(mean,buf+i+2);
                break;
            }
        }
        printf("获取数据成功 __%d__\n" ,__LINE__);
    
        //插入数据库
        sprintf(sql,"insert into dict values(\"%s\", \"%s\");",word,mean);
        printf("spl=%s\n",sql);
        if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK){
            printf("sqlite3_exec error: %s __%d__",errmsg,__LINE__);
            return -1;
        }
    }
    //关闭文件
    fclose(fp);
    //关闭数据库
    sqlite3_close(db);
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5G随身WiFi推荐测评:品速5G VS 格行5G随身WiFi,随身wifi哪个品牌网速好?性价比更高?

玩游戏卡顿遭吐槽&#xff0c;直播掉线成笑柄&#xff0c;4G网络已难满足需求。5G随身wifi虽受追捧&#xff0c;但价格较高令人犹豫。面对众多品牌&#xff0c;随身WiFi哪个品牌靠谱呢&#xff1f;性价比高呢&#xff1f;今天就来测评一下口碑最好的无线随身WiFi格行5G随身wifi…

新能源车载芯片分析

新能源汽车市场正迸发出巨大的活力&#xff0c;传统主机厂和新势力都纷纷推出各种车型&#xff0c;打起了价格战&#xff0c;各种新技术让人眼花缭乱。当前&#xff0c;战场硝烟弥漫&#xff0c;新能源汽车公司犹如春秋时期的各诸侯国。车载芯片作为新能源汽车的关键组成部分&a…

NDK 基础(一)—— C 语言知识汇总

1、数据类型 在 C 语言中&#xff0c;数据类型可以分为如下几类&#xff1a; 基本数据类型&#xff1a; 整数类型&#xff08;Integer Types&#xff09;&#xff1a;是算数类型&#xff0c;包括如下几种&#xff1a; int&#xff1a;用于表示整数数据&#xff0c;通常占用四个…

nvm 切换 Node 版本失败

创建vue3项目时&#xff0c;需要切换到更高版本的 node&#xff0c;于是使用 nvm (node 包版本管理工具)进行版本切换 切换版本时&#xff0c;显示成功&#xff0c;但再次查看当前 node 版本时&#xff0c;发现没切换过来。 解决方法&#xff1a; where node 查看node的安装…

车道分割YOLOV8-SEG

车道分割YOLOV8-SEG&#xff0c;训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV的DNN调用&#xff0c;支持C,PYTHON,ANDROID开发 车道分割YOLOV8-SEG

深圳工厂车间降温通风设备

深圳工厂降温方案多种多样&#xff0c;可以根据工厂的具体情况和需求来选择合适的方案。以下是一些常见的降温方案&#xff1a; 通风换气&#xff1a;通过安装负压风机或冷风机等设备&#xff0c;加强通风换气&#xff0c;将室内热空气排出&#xff0c;吸入室外相对凉爽的空气…

零基础俄语培训哪家好,柯桥俄语培训

1、Мощный дух спасает расслабленное тело. 强大的精神可以拯救孱弱的肉体。 2、Единственное правило в жизни, по которому нужно жить — оставаться человеком в лю…

WSL及UBUNTU及xfce4安装

如何拥有Linux服务器&#xff1f; wsl 是适用于 Linux 的 Windows 子系统&#xff08;Windows Subsystem for Linux&#xff09;。是一个为在Windows 10和Windows Server 2019上能够原生运行Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层&#xff0c;可让开发…

Docker 的数据管理 端口映射 容器互联 镜像创建

一 Docker 的数据管理 1 管理 Docker 容器中数据主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09; 数据卷容器&#xff08;DataVolumes Containers&#xff09;。 1.1 数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机…

数据污染对大型语言模型的潜在影响

大型语言模型&#xff08;LLMs&#xff09;中存在的数据污染是一个重要问题&#xff0c;可能会影响它们在各种任务中的表现。这指的是LLMs的训练数据中包含了来自下游任务的测试数据。解决数据污染问题至关重要&#xff0c;因为它可能导致结果偏倚&#xff0c;并影响LLMs在其他…

linux 中 make 和 gmake的关系

1. 关系 gmake特指GNU make。 make是指系统默认的make实现; 在大多数Linux发行版中&#xff0c;make就是GNU make&#xff0c;但是在其他unix中&#xff0c;gmake可以指代make的某些其他实现&#xff0c;例如BSD make或各种商业unix的make实现。 gmake是GNU Make的缩写。 Linux…

【基础C-递归的易错思路】

目录 1. 分析2. 代码3. 结果&#xff1a; 1. 分析 现在要写一个小程序&#xff0c;实现输入整型&#xff1a;4268&#xff0c;输出字符:‘4’,‘2’,‘6’,‘8’,思路很简单&#xff0c;就是进行整数的除10&#xff0c;结果对10求模就行&#xff0c;但是得到的值是逆序排列&…

Vue 组件分类、局部注册和全局注册

文章目录 背景知识组件分类安装 vue-cli示例设置组件局部注册设置组件全局注册 背景知识 开发 Vue 的两种方式&#xff1a; 核心包传统开发模式&#xff1a;基于 html / css / js 文件&#xff0c;直接引入核心包&#xff0c;开发 Vue。工程化开发模式&#xff1a;基于构建工…

[c++]菱形继承解析

菱形继承 大概示意图&#xff1a; 菱形继承不一定只是标准的菱形&#xff0c;只要形似菱形的都可以叫菱形继承。 (以下说明都是默认公有继承&#xff0c;public和protected成员情况下) 菱形继承会造成数据的冗余和二义性&#xff1a; 冗余&#xff1a;一个Assitant对象里面有…

[C++基础学习]----03-程序流程结构之循环结构详解

前言 在C程序中&#xff0c;循环结构在用于重复执行一段代码块&#xff0c;直到满足某个条件为止。循环结构有多种形式&#xff0c;包括while循环、do-while循环和for循环。 正文 01-循环结构简介 1、while循环语句&#xff1a; while循环在每次循环开始前检查条件是否为真&a…

数据库锁介绍

数据库锁是一种同步机制&#xff0c;用于控制多个事务对共享资源的访问&#xff0c;防止并发操作造成的数据不一致。在数据库中&#xff0c;锁通常分为两种基本类型&#xff1a;排他锁&#xff08;Exclusive Locks&#xff09;和共享锁&#xff08;Shared Locks&#xff09;。排…

大型语言模型高效推理综述

论文地址&#xff1a;2404.14294.pdf (arxiv.org) 大型语言模型&#xff08;LLMs&#xff09;由于在各种任务中的卓越表现而受到广泛关注。然而&#xff0c;LLM推理的大量计算和内存需求给资源受限的部署场景带来了挑战。该领域的努力已经朝着开发旨在提高LLM推理效率的技术方…

【C++】namespace、class、struct的区别

文章目录 命名空间定义命名空间using指令不连续的命名空间嵌套的命名空间多文件编程时的命名空间命名空间只能全局范围内定义命名空间中的函数 可以在“命名空间”外 定义无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识符加上了static,使得其可…

【Hadoop】-Apache Hive使用语法与概念原理[15]

一、数据库操作 创建数据库 create database if not exists myhive; 使用数据库 use myhive; 查看数据库详细信息 desc database myhive; 数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的&#xff1a;/user/hive/warehouse内 创建数据库并指定hdfs…

redis7 for windows的安装教程

本篇博客主要介绍redis7的windows版本下的安装教程 1.redis介绍 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的&#xff0c;基于内存的数据结构存储系统&#xff0c;可用作数据库、缓存和消息代理。它支持多种数据结构&#xff0c;如字符串、哈希表、列…