#include <stdio.h>
#include <sqlite3.h>
#include <string.h>
int main(int argc, const char *argv[])
{
//打开数据库
sqlite3 *db = NULL;
if(sqlite3_open("./dict.db", &db) != SQLITE_OK)
{
printf("sqlite3_open failed:%s __%d__\n", sqlite3_errmsg(db), __LINE__);
return -1;
}
printf("创建数据库 dict.db 成功 __%d__\n", __LINE__);
//创建表格
char sql[128] = "create table if not exists dict (word char, mean char);";
char* errmsg = NULL;
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("sqlite3_exec failed:%s __%d__\n", errmsg, __LINE__);
return -1;
}
printf("表格创建成功 __%d__\n", __LINE__);
//打开文件
FILE* fp = fopen("./dict.txt", "r");
if(NULL == fp)
{
perror("fopen");
return -1;
}
//循环读取文件中的数据,一行一行的读取
char buf[256] = "";
char word[32] = "";
char mean[200] = "";
int count = 1;
int i = 0;
char* ptr = NULL;
while(1)
{
if(fgets(buf, sizeof(buf), fp) == NULL)
break;
buf[strlen(buf)-1] = 0;
//分离单词和意思
bzero(word, sizeof(word));
bzero(mean, sizeof(mean));
//获取" "子串在buf中的地址
ptr = strstr(buf, " ");
if(NULL == ptr)
{
printf("没有找到对应子串\n");
break;
}
strncpy(word, buf, ptr-buf); //" "子串前面是单词
strcpy(mean, ptr+3); //" "子串后面是意思
//插入到数据库中
sprintf(sql,"insert into dict values(\"%s\", \"%s\");", word, mean);
printf("sql= %s\n", sql);
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("sqlite3_exec failed:%s __%d__\n", errmsg, __LINE__);
return -1;
}
}
//关闭文件
fclose(fp);
//关闭数据库,释放对应的内存空间
if(sqlite3_close(db) != SQLITE_OK)
{
printf("sqlite3_close failed:%s __%d__\n", sqlite3_errmsg(db), __LINE__);
return -1;
}
printf("slqite3 sq.db close success\n");
return 0;
}
04-10
2632
06-04
05-07
09-17