#include <myhead.h>
#include<sqlite3.h>
#define ERR_MSG(msg) do{\
fprintf(stderr,"__%d__:",__LINE__);\
perror(msg);\
}while(0)
int do_insert(sqlite3 *db,char*,char*);
int main(int argc, const char *argv[])
{
FILE *fp;
if((fp=fopen("./dict.txt","r"))==NULL)
{
ERR_MSG("fopen");
return -1;
}
printf("fopen success\n");
//创建并打开一个数据库
sqlite3 *db=NULL;
if(sqlite3_open("./dic.db",&db)!=SQLITE_OK)
{
fprintf(stderr,"sqlite3_open:%s %d __%d__\n",\
sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
return -1;
}
printf("sqlite3_open success\n");
//创建一个表格
char sql[128]="create table if not exists dic (world 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 dic success\n");
//定义存放数据的数组
char buf[128];
char world[64];
char mean[64];
char *res=NULL;
while(1)
{
//每次读取数据前都需要清空
bzero(buf,sizeof(buf));
bzero(world,sizeof(world));
bzero(mean,sizeof(mean));
res=fgets(buf,sizeof(buf),fp);
if(NULL==res)
{
printf("读取完毕\n");
break;
}
char *p=buf;
char *worldptr=world;
char *meanptr=mean;
while(*p!=' '||*(p+1)!=' ')
{
if(*p=='\'')
{
*worldptr++='\'';
p++;
continue;
}
*worldptr++=*p++;
}
while(*p==' ')
p++;
while(*p!='\n')
{
*meanptr++=*p++;
}
do_insert(db,world,mean);
}
//关闭数据库
if(sqlite3_close(db) != SQLITE_OK)
{
fprintf(stderr,"sqlite3_close:%s %d __%d__\n",\
sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
return -1;
}
printf("close database my.db success\n");
fclose(fp);
return 0;
}
//插入数据
int do_insert(sqlite3 *db,char *world,char*mean)
{
char sql[128];
sprintf(sql,"insert into dic values(\"%s\",\"%s\");",world,mean);
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("insert dic success\n");
return 0;
}
电子词典导入数据库
于 2023-09-05 08:56:35 首次发布