步骤
1.通过sqlite3_open语句创建数据库
2.通过fgets读取存在txt文件中的每一行单词
3.使用sqlite3_exec将读取到的数据写入目标数据库中
4.使用sqlite3_close结束程序。
代码示例
#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
#include <string.h>
sqlite3* db = NULL;
int id =0;
void do_insert(void)
{
int i;
char eng[20]="";
char sq[70]="";
char chi[50]="";
FILE * fd = fopen("./dict.txt","r");
int index = 0;
char * res= NULL;
char sql[100]="";
char * errmsg = NULL;
while(1)
{
id++;
index =0;
bzero(eng,sizeof(eng));
bzero(chi,sizeof(chi));
bzero(sql,sizeof(sql));
res = fgets(sq,sizeof(sql),fd); // 一行行读取数据
if (NULL == res)
{
break;
}
while(1)
{
if (sq[index]==' '&&sq[index+1]==' ')
{
for (i=0;i<index;i++)
{
eng[i]=sq[i];
}
strcpy(chi,sq+2+index);
sprintf(sql,"insert into stu values (%d,\"%s\",\"%s\");",id,eng,chi);
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
fprintf(stderr, "__%d__ sqlite3_exec:%s\n", __LINE__, errmsg);
return ;
}
break;
}
index++;
}
}
}
int main(int argc, const char *argv[])
{
//打开数据库
if(sqlite3_open("./dic.db", &db) != SQLITE_OK)
{
printf("err_code:%d\n", sqlite3_errcode(db));
printf("errmsg:%s\n", sqlite3_errmsg(db));
fprintf(stderr, "__%d__ sqlite3_open failed\n", __LINE__);
return -1;
}
printf("sqlite3_open success\n");
//执行sql语句
#if 0
int sqlite3_exec(
sqlite3* db, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *arg, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
#endif
//创建一个表格
char* sql = "create table if not exists stu (id int primary key, eng char, chi char);" ;
char* errmsg = NULL;
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
fprintf(stderr, "__%d__ sqlite3_exec:%s\n", __LINE__, errmsg);
return -1;
}
printf("create table success\n");
do_insert();
//关闭数据库
if(sqlite3_close(db) != SQLITE_OK)
{
printf("err_code:%d\n", sqlite3_errcode(db));
printf("errmsg:%s\n", sqlite3_errmsg(db));
fprintf(stderr, "__%d__ sqlite3_close failed\n", __LINE__);
return -1;
}
printf("sqlite3_close success\n");
return 0;
}
结果测试
编译运行成功后通过图形化界面查看生成的数据库
由图形化界面打开后的数据当单词中出现特殊字符或者空格时该程序也能成功拷贝数据