Linux下C程序编程——sqlite3数据库

**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);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值