将dict.txt导入到数据库中
单词一列,意思一列
完成增删改。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<sqlite3.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int copy(sqlite3 *db)
{
FILE*fp=fopen("./dict.txt","r");
char buf[128];
char eng[30];
char chn[30];
int i=0,j=0;
int num=1;
char cmd[128];
char *errmsg;
while(1)
{
bzero(eng,sizeof(eng));
bzero(chn,sizeof(chn));
i=0;
j=0;
if(fgets(buf,sizeof(buf),fp)==NULL)
{
break;
}
while(buf[i]!=' ')
{
eng[0]='"';
eng[i+1]=buf[i];
i++;
}
eng[i+1]='"';
eng[i+2]=0;
printf("%s\n",eng);
j=i;
i=0;
while(buf[j]==' ')
j++;
while(buf[j]!='\n')
{
chn[i]=buf[j];
i++;
j++;
}
chn[i]=0;
sprintf(cmd,"insert into dict values (%d,%s,'%s');",num,eng,chn);
if(sqlite3_exec(db,cmd,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"%s\n",errmsg);
return -1;
}
num++;
}
printf("copy 完成\n");
return 0;
}
int delete(sqlite3 *db)
{
int num;
printf("请输入要删除的行号\n");
scanf("%d",&num);
char cmd[128];
char *errmsg;
sprintf(cmd,"delete from dict where id=%d",num);
if(sqlite3_exec(db,cmd,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"%s\n",errmsg);
return -1;
}
}
int change(sqlite3 *db)
{
int num;
printf("请输入要修改的行号\n");
scanf("%d",&num);
char cmd[128];
char *errmsg;
char buf[128]="";
char chn[128]="";
printf("修改的单词:");
scanf("%s",buf);
printf("修改的中文:");
scanf("%s",chn);
sprintf(cmd,"update dict SET word='%s' where id=%d",buf,num);
if(sqlite3_exec(db,cmd,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"%s\n",errmsg);
return -1;
}
sprintf(cmd,"update dict SET chinese='%s' where id=%d",chn,num);
if(sqlite3_exec(db,cmd,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"%s\n",errmsg);
return -1;
}
}
int main(int argc, const char *argv[])
{
sqlite3 *db;
if(sqlite3_open("./s1.db",&db)!=SQLITE_OK)
{
fprintf(stderr,"err:%d %s",sqlite3_errcode(db),sqlite3_errmsg(db));
}
printf("db create success\n");
char buf[128]="create table if not exists dict(id int ,word char ,chinese char);";
char *errmsg=NULL;
sqlite3_exec(db,buf,NULL,NULL,&errmsg);
char c;
while(1)
{
system("clear");
printf("*********************\n");
printf("********1.增*********\n");
printf("********2.删*********\n");
printf("********3.改*********\n");
printf("********4.查*********\n");
printf("********5.退出*******\n");
printf("please puts>>>");
c=getchar();
while(getchar()!=10);
switch(c)
{
case '1':copy(db);break;
case '2':delete(db);break;
case '3':change(db);break;
case '4':break;
case '5':goto END;
default:printf("输入错误,请重新输入");
}
while(getchar()!=10);
}
END:
if(sqlite3_close(db)!=SQLITE_OK)
{
fprintf(stderr,"err:%d %s",sqlite3_errcode(db),sqlite3_errmsg(db));
}
return 0;
}