将单词表导入数据库

该博客主要展示了如何使用C语言结合SQLite进行数据库操作。首先,程序打开并初始化数据库`my.db`,然后创建名为`danci`的表。接着,从`1.txt`文件中读取内容,逐行处理并插入英文和中文单词到数据库中。最后,关闭数据库连接。整个过程涉及文件I/O、字符串处理和SQLite的增删查改操作。
摘要由CSDN通过智能技术生成

1.c

#include "./db.h"
#include <sys/types.h>
#include <sys/stat.h>

int main(int argc, const char *argv[])
{
	char eng[30] = "";
	char chinese[30] = "";
	FILE* fp = fopen("./1.txt","r");
	if(NULL == fp)
	{
		perror("fopen");
		return -1;
	}
	do_open();
	do_create();
	printf("初始化成功\n");
	
	char str[100];
	char* p;
	while(1)
	{
		bzero(str,sizeof(str));
		p=str;
		bzero(p,100);
		if(NULL == fgets(str,sizeof(str),fp))
		{
			break;
		}
		str[strlen(str)-1] = 0;
		while(((*p) != ' ') || (*(p+1) != ' '))
			p++;
		*p = 0;
		p = p+3;
		
		do_insert(str, p);
		//puts(str);
		//puts(p);
	}
	printf("单词导入成功!!!!\n");

	do_close();

	return 0;
}

db.c

#include "./db.h"

struct dbinfo dbdata;
char str[20];

//初始化
int do_open(void)
{
	//创建并打开数据库
	dbdata.db = NULL;
	strcpy(str,"./my.db");//需要打开的数据库;
	if(sqlite3_open(str, &dbdata.db) != SQLITE_OK)
	{
		fprintf(stderr, "sqlite3_open:%s\t%d", sqlite3_errmsg(dbdata.db), __LINE__);
		return -1;
	}
	printf("database open success!\n");
	
	return 0;
}

//创建表
int do_create()
{
	strcpy(str,"danci");//需要打开数据库中哪一张表;
	//创建表
	char* sql = (char*)malloc(60);
	sprintf(sql,"create table if not exists %s (eng char, chinese char);",str);//表中类型格式
	//printf("%s",sql);
	char* errmsg = NULL;

	if(sqlite3_exec(dbdata.db, sql, NULL, NULL, &errmsg))
	{
		fprintf(stderr, "sqlite3_exec:%s\t%d", errmsg, __LINE__);
		return -1;
	}
	printf("create table success!\n");
	free(sql);

	return 0;
}

//增
int do_insert(char* eng, char* chinese)
{
	//printf("%s\n", str);
	//插入表
	char* sql = (char*)malloc(200);
	sprintf(sql,"insert into %s ('eng', 'chinese') values (\"%s\",\"%s\");", str, eng, chinese);
	//printf("%s\n",sql);
	char* errmsg = NULL;

	if(sqlite3_exec(dbdata.db, sql, NULL, NULL, &errmsg))
	{
		fprintf(stderr, "sqlite3_exec:%s\t%d\n", errmsg, __LINE__);
		fprintf(stderr,"%s\n",sql);
		return -1;
	}
	//printf("create table success!\n");
	free(sql);
 	return 0;
}

//关闭
int do_close()
{
	//关闭数据库
	if(sqlite3_close(dbdata.db) != SQLITE_OK)
	{
		fprintf(stderr, "sqlite3_close:%s\t%d", sqlite3_errmsg(dbdata.db), __LINE__);
		return -1;
	}

}

db.h

#ifndef __DB_H__
#define __DB_H__

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

struct dbinfo
{
	sqlite3* db;
};

//初始化
int do_open(void);
//创建表
int do_create(void);
//增
int do_insert(char* eng, char* chinese);
//关闭
int do_close();

#endif

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值