将dict.txt导入到数据库中
#include <stdio.h>
#include <sqlite3.h>
#include <string.h>
int do_insert(sqlite3 *db,char *word,char *translate);
int main(int argc, const char *argv[])
{
sqlite3 *db = NULL;//句柄指针
//创建数据库
if(sqlite3_open("./mydatabase.db",&db)!=SQLITE_OK)
{
fprintf(stderr,"__%d__sqlite3_open:%d | %s\n",\
__LINE__,sqlite3_errcode(db),sqlite3_errmsg(db));
return -1;
}
printf("sqlite3_open success\n");
//创建表格
char *errmsg = NULL;
char sql[128] = "create table if not exists dict(word char,translate char);";
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__sqlite3_exec: %s\n",__LINE__,errmsg);
return -1;
}
printf("table dict create success\n");
FILE *fp = fopen("./dict.txt","r");
if(fp == NULL)
{
perror("fopen");
return -1;
}
//读取文件内容
char all[512];
char word[32];
char translate[512];
int temp;//记录单词的末尾
int t;//记录翻译的开始
while(1)
{
bzero(all,sizeof(all));
bzero(word,sizeof(word));
bzero(translate,sizeof(translate));
if(fgets(all,sizeof(all),fp)==NULL)
break;
//找到第一个点的位置
for(int i=0;i<strlen(all);i++)
{
if(all[i] == '.')
{
temp = i;
break;
}
}
//找到翻译的开始
while(all[temp]!=' ')
{
temp--;
}
t = temp+1;//翻译的开始
while(all[temp]==' ')
{
temp--;//单词的末尾,差一个'\0'
}
for(int i=0;i<=temp;i++)
{
word[i] = all[i];
}
word[++temp] = '\0';
strcpy(translate,all+temp+1);
if(do_insert(db,word,translate))
{
break;
}
}
return 0;
}
int do_insert(sqlite3 *db,char *word,char *translate)
{
char *errmsg = NULL;
char sql[1024]="";
char sql_main[32] = "insert into dict values(";
sprintf(sql,"%s\"%s\",\"%s\");",sql_main,word,translate);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"%d sqlite3_insert :%s\n",__LINE__,errmsg);
return -1;
}
return 0;
}