将词典导入数据库
#include <myhead.h>
#define ERR_MSG(msg) do{\
fprintf(stderr,"__%d__",__LINE__);\
perror(msg);\
}while(0)
int do_insert(sqlite3 *db);
int do_delete(sqlite3 *db);
int do_update(sqlite3 *db);
int do_select(sqlite3 *db);
int main(int argc, const char *argv[])
{
//打开数据库
sqlite3 *db=NULL;
if(sqlite3_open("./eng.db",&db)!=SQLITE_OK)
{
fprintf(stderr,"sqlite3_open:%s %d __%d__",\
sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
//sqlite3_errmsg打印错误信息
//sqlite3_errcode打印错误码
return -1;
}
printf("sqlite3_open success\n");
//创建一个表格 create table stu(id int,name char,score float);
//注意:在数据库中怎么写代码里就这么写
//如果不知道代码中是否正确,可以粘贴到数据库中执行
char *ptr="create table if not exists eng(id int,word char,mean char);";
char *errmsg=NULL;
if(sqlite3_exec(db,ptr,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"sqlite3_exec:%s __%d___\n",errmsg,__LINE__);
return -1;
}
printf("create table stu success\n");
char choose;
char xt;
while(1)
{
system("clear");
printf("---------------------\n");
printf("-------1、插入-------\n");
printf("-------2、删除-------\n");
printf("-------3、修改-------\n");
printf("-------4、查询-------\n");
printf("-------5、退出-------\n");
printf("---------------------\n");
printf("请输入:");
choose=getchar();
while(getchar()!=10);
switch(choose)
{
case '1':
do_insert(db);
break;
case '2':
// do_delete(db);
break;
case '3':
// do_update(db);
break;
case '4':
// do_select(db);
break;
case '5':
goto END;
break;
default:
printf("输入错误,请重新输入\n");
}
printf("输入任意字符清屏:");
scanf("%c",&xt);
while(getchar()!=10);
}
END:
//关闭数据库
if(sqlite3_close(db)!=SQLITE_OK)
{
fprintf(stderr,"sqlite3_close:%s %d __%d__",\
sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
//sqlite3_errmsg打印错误信息
//sqlite3_errcode打印错误码
return -1;
}
printf("sqlite3_close success\n");
return 0;
}
//插入数据
int do_insert(sqlite3 *db)
{
FILE *fp;
if((fp=fopen("./dict.txt","r"))==NULL)
{
ERR_MSG("fopen");
return -1;
}
char buf[128]="";
char word[128]="";
char mean[128]="";
char sql[128]="";
int id=1;
char *b=buf;
char *w=word;
char *m=mean;
char *errmsg=NULL;
while(1)
{
bzero(buf,sizeof(buf));
bzero(word,sizeof(word));
bzero(mean,sizeof(mean));
b=buf;
w=word;
m=mean;
if(fgets(buf,sizeof(buf),fp)==NULL)
{
break;
}
buf[strlen(buf)-1]='\0';
//判断是否是英文
while(*b!=' '||*(b+1)!=' ')
{
*(w++)=*(b++);
}
b+=3;
//获取中文释义
while(*b!='\0')
{
*(m++)=*(b++);
}
sprintf(sql,"insert into eng values(%d,\"%s\",\"%s\");",id++,word,mean);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"sqlite3_exec:%s %d",errmsg,__LINE__);
return -1;
}
}
printf("insert success\n");
fclose(fp);
return 0;
}
思维导图: