#include<sqlite3.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, const char *argv[])
{
//打开一个数据库
sqlite3 *db=NULL;
if(sqlite3_open("./dic.db",&db)!=SQLITE_OK)
{
printf("sqlite3 dic.db open failed\n");
return -1;
}
printf("sqlite3 dic.db open success\n");
//创建一个表格
//在数据库中sql语句怎么写,c代码中就怎么写,c代码中就可以省略其中的分号
//创建两个字段
char sql[128]="create table if not exists dic(word char ,mean char)";
char* errmsg=NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("sqlite3 sq.db create failed\n");
return -1;
}
printf("sqlite3 sq.db exec success\n");
FILE* fp;
if((fp=fopen("./dict.txt","r"))==NULL)//以只读方式打开拷贝的文件
{
perror("open");
return -1;
}
char buf[128]="";
char word[50]="";
char mean[50]="";
char sql_insert[128];
char *ptr=NULL;
while(fgets(buf,sizeof(buf),fp)!=NULL)//读了一行执行插入操作
{
//用来循环整个buf个数
//判断哪个是单词 哪个是意思 strstr获取子串
ptr=strstr(buf," ");
if(ptr==NULL)
{
printf("没找到对应子串\n");
break;
}
strncpy(word,buf,ptr-buf);
strcpy(mean,ptr+2);
sprintf(sql_insert,"insert into dic values(\"%s\",\"%s\")",word,mean);
if(sqlite3_exec(db,sql_insert,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("sqlite3 dic.db insert failed\n");
return -1;
}
//最后要清空buf中的数据
bzero(buf,sizeof(buf));
bzero(word,sizeof(word));
bzero(mean,sizeof(mean));
bzero(sql_insert,sizeof(sql_insert));
}
//关闭一个数据库
if(sqlite3_close(db)!=SQLITE_OK)
{
printf("sqlite3 sq.db close failed\n");
return -1;
}
printf("sqlite3 sq.db close success\n");
fclose(fp);
return 0;
}
运行结果: