【网络编程】学习成果day7:用sqlite3和fgetc将字典写入数据库中的数据表。

这篇具有很好参考价值的文章主要介绍了【网络编程】学习成果day7:用sqlite3和fgetc将字典写入数据库中的数据表。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.将字典写入数据库中的数据表
代码:

linux@linux:~/study/NETbc$ cat 03_dictsqlite3.c 
#include<myhead.h>
#define MAX 50

int do_insert(sqlite3* db);

int main(int argc, const char *argv[])
{
	//打开数据库
	sqlite3 *db=NULL;
	if(sqlite3_open("./dict.db",&db)!=SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open:%s %d __%d__\n",\
				sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
		return -1;
	}

	//创建表格
	char sql[128]="create table if not exists stu (word char,mean 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");

	//调用插入数据函数,创建数据表并将英文字典文本文件的单词和意思导入的数据表中
	do_insert(db);

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

	return 0;
}

//插入数据
int do_insert(sqlite3* db)
{
	//打开文件操作
	FILE *fp;
	fp=fopen("dict.txt","r");
	char word[MAX]="";
	char mean[MAX]="";
	int flag=0; 		//标志位,用来区别记录单词(0)还是意思(1)
	int a; 				//接受fgetc的返回值,必须用int才能取到EFO,直接用char接收会产生段错误。
	char ch;   			//记录单个字符

	while((a=fgetc(fp))!=EOF)
	{
		ch=a;
		if(ch=='\n')
		{
			//写入数据库操作
			char sql[128]="";
			if(snprintf(sql,sizeof(sql),"insert into stu values (\"%s\",\"%s\");",\
								word,mean) < 0)
			{
				fprintf(stderr,"snprintf error:__%d__\n",__LINE__);
				return -1;
			}

			char * errmsg=NULL;
			if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				fprintf(stderr,"sqlite3_exec:%s __%d__\n",errmsg,__LINE__);
				return -1;
			}
			bzero(word,sizeof(word)); 	//给字符串清零
			bzero(mean,sizeof(mean));
			flag=0;
			continue;
		}else
		{
			if(ch==' ') 		//此文件中,当一行中有一个空格时,就开始收集mean字符串
			{
				flag=1;
			}
			else if(flag==0)
			{
				int len=strlen(word);
				word[len]=ch; 			//把字符加入字符串中
				word[len+1]='\0'; 		//字符串以'\0'结尾
			}else
			{
				int len=strlen(mean);
				mean[len]=ch; 			//把字符加入字符串中
				mean[len+1]='\0'; 		//字符串以'\0'结尾
			}
		}
	}

	return 0;

}

运行结果:

linux@linux:~/study/NETbc$ gcc 03_dictsqlite3.c -lsqlite3
linux@linux:~/study/NETbc$ ./a.out 
create table stu success
sqlite3_close success
linux@linux:~/study/NETbc$ sqlitebrowser dict.db

【网络编程】学习成果day7:用sqlite3和fgetc将字典写入数据库中的数据表。,数据库,学习,sqlite,c语言文章来源地址https://www.toymoban.com/news/detail-705266.html

到了这里,关于【网络编程】学习成果day7:用sqlite3和fgetc将字典写入数据库中的数据表。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络编程 day 1

    1、大小端存储问题 2、思维导图  

    2024年02月11日
    浏览(24)
  • 网络编程 day 3

    1、UDP下载 2、思维导图

    2024年02月11日
    浏览(28)
  • 网络编程 day 5

    1、根据select TCP服务器流程图编写服务器 2、思维导图

    2024年02月10日
    浏览(22)
  • 网络编程day1

    2024年02月01日
    浏览(39)
  • 网络编程day5

    思维导图 多路复用 selsect ser cli poll ser cli

    2024年01月22日
    浏览(30)
  • day17-网络编程(上)

    你必须了解的网络相关设备和基础概念。 假设 alex 上了一个野鸡大学买了一台电脑,电脑里存了1部小电影,整宿整宿的在宿舍反复的看。 alex 如何想要和室友 于超 进行收发数据,可以通过一根网线来进行连接,并进行数据的传输。 1.1.1 交换机 其他2位室友如何也想和他们的

    2024年04月22日
    浏览(30)
  • 网络编程 day4

    1-广播模型 接收方 发送方 2-组播模型 接收方 发送方 3-多进程并发服务器 4-多线程并发服务器

    2024年02月07日
    浏览(26)
  • 网络编程Day6

    网络聊天室 服务器 客户端

    2024年01月22日
    浏览(28)
  • 网络编程day2

    TCP的基本通信 服务器端 客户端 实现机械臂控制

    2024年01月18日
    浏览(47)
  • day18-网络编程(下)

    OSI的7层模型对于大家来说可能不太好理解,所以我们通过一个案例来讲解: 假设,你在浏览器上输入了一些,内部通过DNS找到对应的IP后,再发送数据时内部会做如下的事: 应用层:规定数据的格式。 表示层:对应用层数据的编码、压缩(解压缩)、分块、加密(解

    2024年04月22日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包