**SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎
sqlite数据库提供了很多API供人们使用C程序编程来操作它。
下载链接:https://pan.baidu.com/s/1g1I7xGVxm5XqvCcqMOWxNg
提取码:qb04
我觉得这里面要特别注意的一点是我们保存数据到数据库的时候,很多时候我们的数据发送过来是用一个变量保存着,并不是常量,而向sqlite数据库保存数据的时候是这样的:insert into table_name values(‘data1’,‘data2’,‘data3’…);可以看出每一段的数据都是由单引号包括着的,我们把保存有数据的变量放进去是不行的,它会直接把我们的变量名存进去!
所以这里我是这样解决的:sprintf(sql1, “insert into temp values(%s,%s,%s)”, product,tim,tem);
product,tim,tem这三个是保存有数据的变量
下面给出一个使用实例
/*********************************************************************************
* Copyright: (C)
* 2021 li liangshi<1007146932@qq.com>
* All rights reserved.
*
* Filename: sqlite.c
* Description: This file
*
* Version: 1.0.0(2021年08月02日)
* Author: li liangshi <1007146932@qq.com>
* ChangeLog: 1, Release initial version on "
* 2021年08月02日 19时14分13秒"
*
********************************************************************************/
#include <stdio.h>
#include <sqlite3.h>
#include <string.h>
void sqlite_tem(char* buff)
{
int nrow=0;
int ncolumn = 0;
char **azResult=NULL;
int rv;
sqlite3 *db=NULL;
char *zErrMsg = 0;
char sql1[100];
char *data1 = NULL;
char *data2 = NULL;
char *data3 = NULL;
char product[128]={};
char tim[128]={};
char tem[128]={};
//分割数据,把buff里面的数据以“/”为分隔符分成三段
data1 = strtok(buff,"/");
data2 = strtok(NULL, "/");
data3 = strtok(NULL, "/");
//拼接字符串,让每一段数据都以单引号开头,以单引号结尾,使其能够符合发送到数据库格式要求
sprintf(&product,"%s%s%s", "'",data1,"'");
sprintf(&tim,"%s%s%s", "'",data2,"'");
sprintf(&tem,"%s%s%s", "'",data3,"'");
//打开数据库tempreture
rv = sqlite3_open("tempreture.db", &db);
if(rv)
{
fprintf(stderr, "Can't open database:%s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 0;
}
else printf("you have opened a sqlite3 database named tempreture.db successfully!");
//把数据存入到表temp中
sprintf(sql1, "insert into temp values(%s,%s,%s)", product,tim,tem);
sqlite3_exec(db, sql1, NULL, NULL, &zErrMsg);
printf("sqlite3_exec = %d\n", sqlite3_exec);
sqlite3_close(db);
}