0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

玩转SQLite6:使用C语言来读写数据库

码农爱学习 来源:码农爱学习 作者:码农爱学习 2022-09-25 08:52 次阅读

上篇文章介绍了如何使用Pyhton语言来操作SQLite数据库,对于嵌入式开发,更多的是使用C/C++语言进行开发,因此,本篇介绍如何使用C语言来操作SQLite数据库。

1 SQLite C语言API函数

SQLite的C语言API函数的官方文档地址:https://sqlite.com/capi3ref.html#sqlite3_free

pYYBAGMu-DCAMArpAAPoBmna8CA411.png

对于数据库的基础操控,可以先了解以下几个最基本的API函数:

1.1 打开数据库 sqlite3_open

该函数用于打开sqlite3数据库的连接

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);

参数含义:

filename: 数据库文件名

ppDb: 数据库handle ,用结构体sqlite3来表示一个打开的数据库对象

1.2 执行sql语句 sqlite3_exec

int sqlite3_exec(
 sqlite3*,                                  /* An open database */
 const char *sql,                           /* SQL to be evaluated */
 int (*callback)(void*,int,char**,char**),  /* Callback function */
 void *,                                    /* 1st argument to callback */
 char **errmsg                              /* Error msg written here */
);

参数含义:

sqlite3 *: 数据库句柄

sql: 要执行的sql语句

callback: 回调函数

void *: 回调函数的第一个参数

errmsg: 错误信息,如果没有问题则为NULL

1.3 回调函数

回调函数式一个比较复杂的函数,一般用于sql语句执行后的数据打印,其原型为:

int callback(
    void *params,
    int column_size,
    char **column_value,
    char **column_name
);

参数含义:

params: sqlite3_exec传入的第四个参数

column_size: 结果字段的个数

column_value: 返回记录的一位字符数组指针

column_name: 结果字段的名称

回调函数的通常写法为:

static int callback(void *data, int argc, char **argv, char **azColName)
{
   int i;
   fprintf(stderr, "%s:n", (const char*)data);
   for(i=0; i;>

运行结果:

poYBAGMu-KKAeR5kAACnikFa9fE463.png

4 总结

本篇简单介绍了如何使用SQLite的C语言API中最基础的几个函数,实现对数据库的读写,后续再介绍其它常用的C语言API函数的用法。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7528

    浏览量

    128457
  • 数据库
    +关注

    关注

    7

    文章

    3590

    浏览量

    63365
  • SQlite
    +关注

    关注

    0

    文章

    78

    浏览量

    15764
收藏 人收藏

    评论

    相关推荐

    玩转SQLite5:使用Python来读写数据库

    本篇介绍了如何使用**Python**语言来进行SQLite数据库读写,在嵌入式式开发中,更多的是使用**C/C++**语言进行开发,因此
    的头像 发表于 09-25 08:51 1452次阅读
    <b class='flag-5'>玩转</b><b class='flag-5'>SQLite</b>5:使用Python来<b class='flag-5'>读写</b><b class='flag-5'>数据库</b>

    labview连接sqlite3数据库

    labview利用“调用库函数节点”通过“动态链接(DLL)”操作sqlite3数据库创建数据库,创建表格,插入数据,查询等操作。这个程序
    发表于 07-19 16:04

    Wince系统基于数据库Sqlite的应用

    觉得有点象,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发
    发表于 07-18 11:31

    关于Lv与Sqlite数据库的通信

    有大神做过Lv与Sqlite数据库的通信吗?谢谢了
    发表于 06-22 22:01

    如何用labview创建SQLite数据库

    如何用labview创建SQLite数据库,谢谢
    发表于 01-22 17:19

    LabVIEW访问SQLite数据库接口研究

    的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。更多介绍可访问其
    发表于 02-04 13:38

    LabVIEW访问SQLite数据库(调用sqlite3.dll)

    最近研究了一下LabVIEW访问SQLite数据库,NI官网上有现成的工具包,但我觉得用的麻烦,因此研究了一下直接通过“调用库函数节点”调用sqlite3.dll。
    发表于 03-22 10:23

    基于dragonboard410csqlite3数据库数据存储和管理

    今天给大家介绍如何利用sqlite3数据库为dragonboard 410c开发进行数据存储和管理,s
    发表于 09-21 10:59

    嵌入式系统到底该选哪款数据库SQLite真的是最优解吗?

    :TDengine的服务是单个持久性进程,对每个时间序列单独建表,支持很好的并发;而SQLite只提供数据库级的锁定,在并发的读写方面性能不是很好,数据库可能会被写操作独占,从而导致其
    发表于 02-11 11:02

    Labview基于JKI SMO框架Sqlite轻量数据库读写

    本帖最后由 Harry2017 于 2021-1-18 20:30 编辑 Labview读写Sqlite数据库,基于JKI SMO框架面向对象框架方式读写
    发表于 01-10 19:11

    嵌入式数据库sqlite移植及使用的资料分享

    ,掌握 sqlite 数据库软件移植的步骤,掌握 sqlite 开发的两种方式 — 命令模式和 C代码开发模式 的使用方法,并编程实现简单通讯录查询实验。二.实验内容实验4.1 移植嵌
    发表于 10-28 09:48

    Sqlite移动嵌入式数据库Sqlite的日常SQL操作语句是什么?

    Sqlite移动嵌入式数据库Sqlite的日常SQL操作语句是什么?
    发表于 12-27 07:37

    LabView中SQLite数据库怎样做附加数据库操作?

    如题,labView操作SQLite数据库数据放在两个不同的文件中,想要将另外一个数文件附加到主
    发表于 05-03 23:41

    SQLite数据库的特点 SQLite数据库简单介绍

    语言,使得SQLite成为非常流行的数据库管理系统。 SQLite数据库的特点: 1. 轻量级:SQLi
    的头像 发表于 08-28 16:40 3651次阅读

    SQLite数据库与python的区别

    SQLite数据库与python的区别 SQLite是一种轻量级关系型数据库管理系统,是一个嵌入式的数据库引擎。Python是一种高级编程
    的头像 发表于 08-28 16:41 531次阅读