将单词表存储到数据库中
代码
#include <stdio.h>
#include<sqlite3.h>
#include<stdlib.h>
#include<string.h>
int do_select(sqlite3 *db);
int do_delete(sqlite3 *db);
int do_update(sqlite3 *db);
int do_insert(sqlite3 *db);
int main(int argc, const char *argv[])
{
sqlite3 *db=NULL;
if(sqlite3_open("./mydb",&db)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_open:%s\n",__LINE__,sqlite3_errmsg(db));
return -1;
}
printf("sqlite3_open success\n");
char sql[128]="create table if not exists stu(num int ,name char ,meaning char);";
char *errmsg=NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_exec%s\n",__LINE__,errmsg);
return -1;
}
printf("sqlite3_exec success\n");
char choose=0;
while(1)
{
system("clear");
printf(".................................\n");
printf(".................................\n");
printf(".........1、增加.................\n");
printf(".........2、删除.................\n");
printf(".........3、修改.................\n");
printf(".........4、查寻.................\n");
printf(".........5、退出.................\n");
printf(".................................\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");
break;
}
printf("输入任意字符,清屏\n");
while(getchar()!=10);
}
END:
if(sqlite3_close(db)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_close:%s\n",__LINE__,sqlite3_errmsg(db));
return -1;
}
printf("sqlite3_close success\n");
return 0;
}
int do_insert(sqlite3 *db)
{
FILE *fp=fopen("/home/ubuntu/dict (2).txt","r");
if(NULL==fp)
{
perror("fopen");
return -1;
}
char buf[128]="";
char name[128]="";
char sql[200]="";
char meaning[128]="";
int i=0;
while(1)
{
bzero(buf,sizeof(buf));
bzero(name,sizeof(name));
bzero(meaning,sizeof(meaning));
if(NULL==fgets(buf,sizeof(buf),fp))
break;
buf[strlen(buf)-1]=0;
int j=0,b=0;
while(buf[j]!=' ')
{
name[j]=buf[j];
j++;
}
b=j+1;
j=0;
while(buf[b]!='\0')
{
meaning[j]=buf[b];
j++;b++;
}
i++;
sprintf(sql,"insert into stu values (%d,\"%s\",\"%s\")",i,name,meaning);
/*printf("请输入>>>>>>");
scanf("%s",name);
getchar();
scanf("%c",&c);
getchar();
scanf("%s",meaning);
getchar();*/
char *errmsg=NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_exec%s\n",__LINE__,errmsg);
return -1;
}
}
}
/*int callback(void *arg,int ncloumn,char **ncloumn_text,char **ncloumn_name)
{
if(0==*(int *)arg)
{
for(int i=0;i<ncloumn;i++)
{
printf("%s\t",ncloumn_name[i]);
}
putchar(10);
*(int *)arg=1;
}
for(int i=0;i<ncloumn;i++)
{
printf("%s\t",ncloumn_text[i]);
}
putchar(10);
return 0;
}
int do_select(sqlite3 *db)
{
char sql[128]="select * from stu";
char *errmsg=NULL;
int flag=0;
if(sqlite3_exec(db,sql,callback,&flag,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_exec%s\n",__LINE__,errmsg);
return -1;
}
return 0;
}*/
int do_delete(sqlite3 *db)
{
int post;
printf("输入删除的位置>>>");
scanf("%d",&post);
char sql[128]="";
sprintf(sql,"delete from stu where num=%d",post);
char *errmsg=NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_exec:%s\n",__LINE__,errmsg);
return -1;
}
}
int do_select(sqlite3 *db)
{
int row,cloumn;
char **pres=NULL;
char str[128]="";
printf("输入查询的单词>>>");
scanf("%s",str);
getchar();
char sql[128]="";
sprintf(sql,"select * from stu where name=\"%s\"",str);
char *errmsg=NULL;
if(sqlite3_get_table(db,sql,&pres,&row,&cloumn,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_get_table:%s\n",__LINE__,errmsg);
return -1;
}
for(int i=0;i<(row+1)*cloumn;i++)
{
printf("%s\t",pres[i]);
if(i%cloumn==cloumn-1)
{
putchar(10);
}
}
sqlite3_free_table(pres);
pres=NULL;
return 0;
}
int do_update(sqlite3 *db)
{
char buf[128]="";
printf("输入修改的位置>>>>");
int post;
scanf("%d",&post);
getchar();
printf("输入修改的值>>>>");
scanf("%s",buf);
getchar();
char sql[128]="";
sprintf(sql,"update stu set name=\"%s\" where num=%d;",buf,post);
char *errmsg=NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_exec:%s\n",__LINE__,errmsg);
return -1;
}
return 0;
}
结果