(2023-3-20)

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


int callBack(void* arg,int ncolumn,char **column_text,char **column_name);
int do_select(sqlite3* db);
int main(int argc, const char *argv[])
{
	//创建并打开数据库
	sqlite3 *db=NULL;
	if(sqlite3_open("./dic.db",&db)!=SQLITE_OK)
	{
		fprintf(stderr,"__%d__ sqlite3_open failed\n",__LINE__);
		return -1;
	}
	printf("sqlite3_open success __%d__\n",__LINE__);


	//创建表格
	char sql[128]="create table if not exists dic(word char,mean char)";
	char *errmsg=NULL;
	if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		fprintf(stderr,"__%d__ sqlite3_exec failed:%s\n",__LINE__,errmsg);
		return -1;
	}
	printf("table dic create success __%d__\n",__LINE__);

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

	//存储数据
	char buf[128]="";
	char word[128]="";
	char mean[128]="";
	int flag=0;

	while(1)
	{
		bzero(buf,sizeof(buf));
		bzero(word,sizeof(word));
		bzero(mean,sizeof(mean));
		if(fgets(buf,sizeof(buf),fp)==NULL)
		{
			break;
		}
		int i=0,j=0,k=0;
		while(buf[k]!='\n')
		{
			if(buf[k]==' ')
			{
				flag++;
			}
			if(flag<2)
			{
				word[i]=buf[k];
				i++;
			}
			else 
			{
				mean[j]=buf[k];
				j++;
			}
			k++;
		}
		flag=0;
		char*errmsg=NULL;
		char sql[128]="";
		sprintf(sql,"insert into dic values('%s','%s')",word,mean);
		if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
		{
			fprintf(stderr,"__%d__ sqlite3_exec failed:%s\n",__LINE__,errmsg);
			return -1;
		}

	}

	do_select(db);


	//关闭数据库,释放内存空间
	if(sqlite3_close(db) !=SQLITE_OK)
	{
		fprintf(stderr,"__%d__ sqlite3_close failed\n",__LINE__);
		return -1;
	}
	printf("sqlite3_close success __%d__\n",__LINE__);
	return 0;
}


//查询相关的回调函数
int callBack(void* arg,int ncolumn,char **column_text,char **column_name)
{
	if(0 == *(int*)arg)
	{
		for(int i=0;i<ncolumn;i++)
		{
			printf("%s\t",column_name[i]);
		}
		putchar(10);
		*(int*)arg=1;
	}
	for(int i=0;i<ncolumn;i++)
	{
		printf("%s\t",column_text[i]);
	}
	putchar(10);

	return 0;
}

//查询
int do_select(sqlite3* db)
{	
	char*errmsg=NULL;
	char sql[128]="select * from dic";
	int flag=0;
	if(sqlite3_exec(db,sql,callBack,&flag,&errmsg)!=SQLITE_OK)
	{
		fprintf(stderr,"__%d__ sqlite3_exec failed:%s\n",__LINE__,errmsg);
		return -1;
	}
	printf("查询成功\n");

}

猜你喜欢

转载自blog.csdn.net/k_weihgl/article/details/129675231