#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int callBack(void* arg,int ncolumn,char **column_text,char **column_name);
int do_select(sqlite3* db);
int main(int argc, const char *argv[])
{
//创建并打开数据库
sqlite3 *db=NULL;
if(sqlite3_open("./dic.db",&db)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_open failed\n",__LINE__);
return -1;
}
printf("sqlite3_open success __%d__\n",__LINE__);
//创建表格
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)
{
fprintf(stderr,"__%d__ sqlite3_exec failed:%s\n",__LINE__,errmsg);
return -1;
}
printf("table dic create success __%d__\n",__LINE__);
//打开文件
FILE *fp=fopen("./dict.txt","r");
if(NULL==fp)
{
perror("fopen");
return -1;
}
//存储数据
char buf[128]="";
char word[128]="";
char mean[128]="";
int flag=0;
while(1)
{
bzero(buf,sizeof(buf));
bzero(word,sizeof(word));
bzero(mean,sizeof(mean));
if(fgets(buf,sizeof(buf),fp)==NULL)
{
break;
}
int i=0,j=0,k=0;
while(buf[k]!='\n')
{
if(buf[k]==' ')
{
flag++;
}
if(flag<2)
{
word[i]=buf[k];
i++;
}
else
{
mean[j]=buf[k];
j++;
}
k++;
}
flag=0;
char*errmsg=NULL;
char sql[128]="";
sprintf(sql,"insert into dic values('%s','%s')",word,mean);
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_exec failed:%s\n",__LINE__,errmsg);
return -1;
}
}
do_select(db);
//关闭数据库,释放内存空间
if(sqlite3_close(db) !=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_close failed\n",__LINE__);
return -1;
}
printf("sqlite3_close success __%d__\n",__LINE__);
return 0;
}
//查询相关的回调函数
int callBack(void* arg,int ncolumn,char **column_text,char **column_name)
{
if(0 == *(int*)arg)
{
for(int i=0;i<ncolumn;i++)
{
printf("%s\t",column_name[i]);
}
putchar(10);
*(int*)arg=1;
}
for(int i=0;i<ncolumn;i++)
{
printf("%s\t",column_text[i]);
}
putchar(10);
return 0;
}
//查询
int do_select(sqlite3* db)
{
char*errmsg=NULL;
char sql[128]="select * from dic";
int flag=0;
if(sqlite3_exec(db,sql,callBack,&flag,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"__%d__ sqlite3_exec failed:%s\n",__LINE__,errmsg);
return -1;
}
printf("查询成功\n");
}
(2023-3-20)
猜你喜欢
转载自blog.csdn.net/k_weihgl/article/details/129675231
今日推荐
周排行