#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlite3.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int putin_db(int fd, sqlite3 *db)
{
char *errmsg = NULL;
char cmd[128] = "";
char key[128] = "";
char translation[128] = "";
char buf[2] = "";
int flag = 1;
bzero(key,sizeof(key));
bzero(translation,sizeof(translation));
int i = 0;
int j = 0;
while(1)
{
if(read(fd,buf,1) == 0)
break;
if(flag == 1)
{
while(buf[0] != ' ')
{
key[i++] = buf[0];
read(fd,buf,1);
}
flag = 0;
}
while(buf[0] == ' ')
read(fd,buf,1);
if(flag == 0)
{
while(buf[0] != '\n')
{
translation[j++] = buf[0];
read(fd,buf,1);
}
flag = 1;
}
if(buf[0] == '\n')
{
sprintf(cmd,"insert into dict values (\"%s\", \"%s\");",key,translation);
if(0 != sqlite3_exec(db, cmd, NULL, NULL,&errmsg) )
{
printf("__%d__ %s\n",__LINE__,errmsg);
return -1;
}
bzero(key,sizeof(key));
bzero(translation,sizeof(translation));
bzero(cmd,sizeof(cmd));
i = 0;
j = 0;
}
}
}
int main(int argc, const char *argv[])
{
//打开数据库
sqlite3 *db = NULL;
if(0 != sqlite3_open("./dict.db",&db))
{
printf("__%d__ %s\n",__LINE__,sqlite3_errmsg(db));
return -1;
}
//创建表格
char *errmsg = NULL;
char sql[128] = "create table if not exists dict(word char, translation char);";
if(0 != sqlite3_exec(db, sql, NULL, NULL, &errmsg))
{
printf("__%d__ %s\n",__LINE__,errmsg);
return -1;
}
//打开dict文件
int fd = open("./dict.txt", O_RDONLY);
if(fd < 0)
{
perror("open false\n");
return -1;
}
putin_db(fd, db);
//关闭数据库
if(0 != sqlite3_close(db))
{
printf("__%d__ %s\n",__LINE__,sqlite3_errmsg(db));
return -1;
}
//关闭文件描述符
close(fd);
return 0;
}
将词典导入到SQLite数据库
于 2023-04-26 22:11:05 首次发布