通过C实现sqlite3操作,(增删改查),导入电子词典

2023-10-28

一、插入

#include <stdio.h>
#include <sqlite3.h>
void do_insert(sqlite3 *db);
int main(int argc, const char *argv[])
{
	//创建并打开一个数据库
	sqlite3 *db = NULL;
	if(sqlite3_open("./mysql.db",&db) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open: %s __%d__\n",sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("open datebase success...\n");

	//创建一个表
	char *sql = "create table if not exists stu (id int,name char,score float);";
	char *errmsg = NULL;

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

	char choose = 0;
	while(1)
	{
		printf("------------------------------\n");
		printf("----------1.INSERT------------\n");
		printf("----------2.DELETE------------\n");
		printf("----------3.UPDATE------------\n");
		printf("----------4.SELECT------------\n");
		printf("----------5.EXIT--------------\n");
		printf("------------------------------\n");

		printf("please enter>>>");
		choose = getchar();
		while(getchar()!=10);

		switch(choose)
		{
		case '1':
			do_insert(db);break;
		case '2':
		//	do_delete();break;
		case '3':
		//	do_update();break;
		case '4':
		//	do_select();break;
		case '5':
			goto END;
		default:
			printf("enter error\n");
		}
	}

END:
	//关闭数据库
	if(sqlite3_close(db) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_close: %s __%d__\n",sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	return 0;
}
void do_insert(sqlite3 *db)
{
	char sql[128] = ""; 
	char id = 0;
	char name[20] = "";
	float score = -1;
	char *errmsg = NULL;
	printf("please enter id>>>");
	id = getchar();
	getchar();
	printf("please enter name>>>");
	scanf("%s",name);
	getchar();
	printf("please enter score>>>");
	scanf("%f",&score);
	getchar();
	sprintf(sql,"insert into stu values (%d,'%s',%f);",id,name,score);
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_exec: %s __%d__\n",errmsg,__LINE__);
		return;
	}
	printf("insert success...\n");
	return;
}

二、导入电子词典

#include <stdio.h>
#include <sqlite3.h>
#include <string.h>
void do_insert(sqlite3 *db);
int main(int argc, const char *argv[])
{
	//创建并打开一个数据库
	sqlite3 *db = NULL;
	if(sqlite3_open("./mysql.db",&db) != SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open: %s __%d__\n",sqlite3_errmsg(db),__LINE__);
		return -1;
	}
	printf("open datebase success...\n");

	//创建一个表
	char *sql = "create table if not exists dict (id int,words char,trans char);";
	char *errmsg = NULL;

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

	//插入单词
	int res = -1;
	int i = 0;
	char c = 0;
	char words[64] = "";
	char trans[128] = "";
	char mysql[256] = "";
	FILE *fp = fopen("./dict.txt","r");
	if(fp == NULL)
	{
		perror("open");
		return -1;
	}
	while(1)
	{
		bzero(words,sizeof(words));
		res = fscanf(fp,"%s",words);
		if(res == EOF)
			break;
		while(1)
		{
			bzero(trans,sizeof(trans));
			fscanf(fp,"%c",trans);
			if(strcmp(trans," ") != 0)
				break;
		}
		fseek(fp,-1,SEEK_CUR);
		bzero(trans,sizeof(trans));
		while(1)
		{
			fscanf(fp,"%s",trans+strlen(trans));
			fscanf(fp,"%c",&c);
			if(c == '\n')
				break;
		}
		sprintf(mysql,"insert into dict values (%d,'%s','%s');",++i,words,trans);
		if(sqlite3_exec(db,mysql,NULL,NULL,&errmsg) != SQLITE_OK)
		{
			fprintf(stderr,"sqlite3_exec: %s %d __%d__\n",errmsg,sqlite3_errcode(db),__LINE__);
			return -1;
		}
	}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过C实现sqlite3操作,(增删改查),导入电子词典 的相关文章

  • 使用 SQLite 创建列表树

    我正在尝试使用 PHP 和 SQLite 表设置创建一个分层列表 如下所示 itemid parentid name 1 null Item1 2 null Item2 3 1 Item3 4 1 Item4 5 2 Item5
  • 删除最初使用“未知分词器”创建的表?

    我有一个 sqlite3 数据库 错误消息显示 无法删除此数据库中的单个表unknown tokenizer mm 我直接用命令试了一下DROP TABLE tablename 里面最新的SQLiteSpy http www yunqa d
  • 销毁/删除 Rails 中的数据库

    是否可以从现有应用程序中完全删除数据库和所有迁移记录等 以便我可以从头开始重新设计数据库 通过发行rake T您有以下数据库任务 rake db create Create the database from DATABASE URL or
  • 迭代 Sqlite-query 中的行

    我有一个表布局 我想用数据库查询的结果填充它 我使用全选 查询返回四行数据 我使用此代码来填充表行内的 TextView Cursor c null c dh getAlternative2 startManagingCursor c th
  • sqlite 插入表中 select * from

    我需要在 Android 应用程序中将数据从一个表移动到另一个表 我想使用以下sql insert into MYTABLE2 select id STATUS risposta DATETIME now data ins from MYT
  • Android 错误 - close() 从未在数据库上显式调用

    我应该在代码的哪里调用 close LogCat 返回此错误 close 从未在数据库上显式调用 android database sqlite DatabaseObjectNotClosedException 应用程序未关闭此处打开的游标
  • Heroku 上重启后 Better-SQLite3 数据库重置

    我有一个 Discord 机器人better sqlite3 https github com JoshuaWise better sqlite3硬币和 XP 数据库 直到两周前它一直工作得很好 现在 每次重新启动后 它只会恢复 XP 和硬
  • iPhone 开发 - sqlite3_bind_int 不起作用

    我正在尝试使用以下代码在数据库中插入一些数据 void insertLocationOnDatabase LocationType aLocation sqlite3 stmt stmt int location aLocation loc
  • 锁定 SQLite 数据库以从 C# 读取

    我的项目有一个 C dll 其中在 Sqllite 中创建一个数据库 共享拒绝 无 这个 dll 会将数据插入到数据库中 我有一个 C exe 它必须访问数据库并显示它 显示需要异步完成 在启动与 sqlitedb 的连接时 有什么方法可以
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 我是否需要安装 SQLite 才能使 SQLiteJDBC 正常工作?

    我想我只是没有 明白 如果我的计算机上尚未安装 SQLite 并且我想编写一个使用嵌入式数据库的 Java 应用程序 并且我将 SQLiteJDBC JAR 下载 导入到我的项目中 那么这就是我所需要的吗 或者 我是否需要先安装 SQLit
  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • SQLiteDatabase.openDatabase 与 SQLiteOpenHelper.getReadableDatabase

    这两种方法有什么区别吗 两者都返回一个打开的 SQLiteDatabase 如果数据库不存在 两者都可以创建数据库 当需要读 写时 SQLiteOpenHelper 还具有 getWriteableDatabase 我应该使用哪种方法以及在
  • 创建日期范围表

    我正在编写一份需要显示每天值的报告 我有查询的开始日期和结束日期 但我希望避免丢失日期 以防表不包含特定日期的值 我正在考虑创建一个基本日期范围表 其中包含开始和结束之间的所有日期 然后将其与数据表左连接以显示每一天的值 我找到了一些适用于
  • 如何在附加的 sqlite 数据库中创建外键?

    我正在尝试创建一个 sqlite3 数据库作为模拟生产环境的测试环境 由于生产的设置方式 表处于多个模式中 我已经在 DBIx Class 中设置了类 使用 schema gt storage gt dbh do将数据库与架构附加在一起 并
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • Android 上的 SQLite 和 MongoDB 具有同步功能

    是否可以在 Android 上使用 SQLite 在服务器上使用像 MongoDB 这样的 NoSQL 数据库 并在两者之间进行 2 路数据复制 同步 或者最好在两端使用 SQL 或者在两端使用 NoSQL 但不要混合使用 有几种不同的方法
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • 如何在 Xamarin.Forms 上使用 System.Data.SQLite Interop.dll?

    每次尝试运行移动应用程序时 我都会遇到以下问题 System DllNotFoundException SQLite Interop dll assembly

随机推荐

  • oracle全文索引之commit与DML操作

    我们知道 无论对多大的数据做DML操作 执行commit都可以很快完成 但如何删除建有全文索引的记录 在commit时可能会很慢 根据推断可以知道是由于域索引造成的 那么在有域索引的情况下 commit时 oracle还做了那些额外工作呢
  • chatgpt赋能python:Python求全排列的介绍

    Python求全排列的介绍 在计算机科学中 全排列是一种排列的形式 将一组元素按照固定的顺序安排 在Python中 可以使用递归和迭代来求解全排列问题 本文将介绍如何用Python求全排列以及如何在SEO方面优化文章 递归方法 递归方法是通
  • 新形势下,企业如何进行数字化转型 附下载地址

    2020年谈企业数字化转型 有一个不变和四个变 不变的是企业面临的整体宏观环境和企业 多年发展积累的运营模式和管理能力 因此企业数字化转型面临的固有难点依然存在 四个 变化因素是疫情影响 5G部署 人工智能 AI 加快应用 以及中美技术加速
  • springboot中 拦截器无法访问数据库解决方法

    在springboot中使用拦截器时 拦截器中还需要访问数据库 会出现实例化数据库访问对象失败的现象 不管是添加 Componse还是添加 Servie 或者 Configuration 均不可以 需要做如下处理 方法如下 1 在集成Web
  • yolov5环境搭建与pytorch中torch、torchvision、torchaudio安装

    python软件安装 可以不单独安装 2条消息 Python安装教程 2022最新 学Python的阿杜的博客 CSDN博客 安装anaconda3 2020 2对应的python版本为3 7 不推荐 2020 11对应的python版本为
  • 数据库MySql python读取插入数据,insert对那些类型加单引号,表单自己参考自己(外键),空值和NULL

    今天做了下数据库作业 好多出错 记录下 查漏补缺 本次只是实现一个employee表单 特殊在有一个外键参考自身主键 并且老师给的数据该外键可为null 表结构直接用workbench 里面构造的 Navicat还没解决不修改密码策略的条件
  • Python中常用的运算符

    1 算数运算符 最常见的 标准算数运算符 加减乘除 取余运算符 幂运算符 2 赋值运算符 3 比较运算符 4 布尔运算符 5 位运算符 1 算数运算符 2 赋值运算符 3 比较运算符 对变量或表达式的结果进行大小 真假等比较 一个 称为赋值
  • python怎么用print打出赋值_python print 输出赋值到变量

    In 52 import io In 53 row ACME 50 91 5 In 54 join row TypeError Traceback most recent call last in gt 1 join row TypeErr
  • 在 SQL 里描述数据分布情况的时候,有 Cardinality 和 Selectivity 两个概念,有什么区别?

    What is the difference between cardinality and selectivity In SQL cardinality refers to the number of unique values in p
  • 分享一波粉丝面试真题-主要是偏管理方面的

    怎么改善团队低迷现状 改善团队低迷的现状是一个重要的管理挑战 以下是一些可能有助于改善团队状态的方法 深入了解问题 首先 需要了解低迷的原因 这可能涉及与团队成员的个人会谈 收集反馈 观察工作流程等 明确问题的性质对于采取适当的措施至关重要
  • 使用python批量将svg转换成PNG

    CairoSVG介绍 CairoSVG是一个将SVG转为PNG PDF PS格式的库 当前版本的CairoSVG至少需要Python 3 5以上版本 CairoSVG安装和使用 pip install cairosvg 通过命令行你就可以使
  • 数据结构课设:学生信息管理系统(完整版)

    系统介绍 学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件 主要用于学校学生信息管理 总体任务是实现学生信息关系的系统化 科学化 规范化和自动化 其主要任务是用计算机对学生各种信息进行日常管理 如查询 修改 增加 删除 另
  • HTTP协议和web工作原理

    HTTP协议 是web学习的核心 学东东切忌只学配置 不学原理 只学会框架有什么用 要会自己写框架 web学习直接关系到J2EE的学习一 HTTP 超文本传输协议 人类之所发展得如此快 就是因为有自己的语言 1 所谓超文本 即纯文本语言 不
  • 使用git push太慢怎么办

    使用git push太慢怎么办 修改host文件 windows 的路径应该在 C Windows System32 drivers etc hosts 在host文件的最后一行加上 151 101 72 249 github global
  • 现代密码学之安全多方计算

    Secure Multi Party Computation 什么是Secure Multiparty Computation 安全定义 Ideal real model Oblivious transfer OT 1 out of 2 s
  • 拓撲排序學習

    确定比赛名次 Problem Description 有N个比赛队 1 lt N lt 500 编号依次为1 2 3 N进行比赛 比赛结束后 裁判委员会要将所有参赛队伍从前往后依次排名 但现在裁判委员会不能直接获得每个队的比赛成绩 只知道每
  • connection ftp refused_ftp: connect: Connection refused 解决方法

    redhat下使用ftp出现connection refused报错 通过查询是端口未开启的缘故 以下为解决方法 root localhost vsftpd usr sbin vsftpd 500 OOPS vsftpd does not
  • Flutter 版本更新 和 dart SDK版本跟新

    The current Dart SDK version is 2 19 5 Because pivot chat requires SDK version gt 3 0 0 lt 4 0 0 version solving failed
  • 基于 RxJs 的前端数据层实践

    近来前端社区有越来越多的人开始关注前端数据层的设计 DaoCloud 也遇到了这方面的问题 我们调研了很多种解决方案 最终采用 RxJs 来设计一套数据层 这一想法并非我们的首创 社区里已有很多前辈 大牛分享过关于用 RxJs 设计数据层的
  • 通过C实现sqlite3操作,(增删改查),导入电子词典

    一 插入 include