作业:将dict.txt中的内容导入到数据库中
注意:
-
导入后检查解释意思是否完整,双词性
-
中间有空格的单词
-
o'clock
代码实现:
#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
#include <string.h>
void do_insert(sqlite3* db,char* word,char* mean)
{
char sql[128]="";
char* errmsg=NULL;
sprintf(sql,"insert into dict values(\"%s\",\"%s\");",word,mean);
if(sqlite3_exec(db, sql, NULL, NULL,&errmsg) != SQLITE_OK)
{
fprintf(stderr, "__%d__ sqlite3_exec:%s\n", __LINE__, errmsg);
return ;
}
}
int main(int argc, const char *argv[])
{
//打开文件
FILE *fp=fopen("./dict.txt","r");
if(fp==NULL){
perror("fopen");
return -1;
}
//打开数据库
sqlite3* db=NULL;
if(sqlite3_open("./my.bd",&db)!=SQLITE_OK)
{
printf("err_code:%d\n",sqlite3_errcode(db));
printf("errmsg:%s\n",sqlite3_errmsg(db));
fprintf(stderr,"__%d__sqlite3_open failed\n",__LINE__);
return -1;
}
//创建一个表格
char* sql="create table if not exists dict(word char primary key,mean 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("create table success\n");
char arr[64]="";
char *res;
char word[32];
char mean[32];
char* p;
while(1){
int i=0;
bzero(arr,sizeof(arr));
bzero(word,sizeof(word));
bzero(mean,sizeof(mean));
res=fgets(arr,sizeof(arr)-1,fp);
p=arr;
if(res!=NULL){
}else{
break;
}
while(*p!=' '||*(p+1)!=' '){
word[i]=*p;
p++;
i++;
}
while(1){
if(*p==' '){
break;
}
p++;
}
strcpy(mean,p);
printf("%s %s",word,mean);
do_insert(db,word,mean);
}
//关闭数据库
if(sqlite3_close(db) != SQLITE_OK)
{
printf("err_code:%d\n", sqlite3_errcode(db));
printf("errmsg:%s\n", sqlite3_errmsg(db));
fprintf(stderr, "__%d__ sqlite3_close failed\n", __LINE__);
return -1;
}
printf("sqlite3_close success\n");
return 0;
}
效果实现:

2360

被折叠的 条评论
为什么被折叠?



