news 2026/8/17 22:10:56

Linux系统编程第十弹——sqlite3

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux系统编程第十弹——sqlite3

1. 数据库

1.1 sqlite3 软件本身命令

学习如何操作数据库 --- sql语句 (structure query language)

1.2 创建一个数据库

命令:

  • $sqlite3 数据文件名 //stu.db (database --数据库 以 .db作为结尾)
  • .databases //查看当前数据库关联的文件名

1.3 数据库操作

1.3.1 创建一张表

create table 表名称 (列名称 1 数据类型, 列名称 2 数据类型, 列名称 3 数据类型, ...);

eg: create table stu (name text,age int, score float);

sqlite3的命令:

查看表 .tables

查看表的结构 .schema

1.3.2 插入数据

给一行中的所有列赋值。

语法:

insert into 表名 values (列值 1, 列值 2, 列值 3,列值 4, ...);

eg:

insert into stu values("xiaoMing",18,99.5);

1.3.3 查询语句

用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。

1.3.3.1 select * from 表名 [匹配条件];

eg: select * from stu;

1.3.3.2 select 列名 1[, 列名 2, ...] from 表名 [匹配条件];

提示:星号(*)是选取所有列的通配符。

sqlite3命令:

.headers on //打开表头

.mode column //以固定的列宽呈现

1.3.3.3 like

用于模糊查找,匹配条件语法:

where 列名 like 列值

  • 1、若列值为数字
    相当于 列名=列值。
  • 2、若列值为字符串
    可以用通配符“%”代表缺少的字符(若干个)

2. 编程使用

思路 --- 类似操作文件

  • 打开
  • 读写
  • 关闭

2.1 sqlite3_exec 函数:

int sqlite3_exec(sqlite3 *db,

const char *sql,

exechandler_t callback,

void *arg,

char **errmsg);

功能:

执行 sql 指向的 SQL 语句,

若结果集不为空,函数会调用函数指针 callback 所指向的函数。

参数:

  • @db: 数据库的标识。
  • @sql: SQL 语句(一条或多条),以’;’结尾。
  • @callback:是回调函数指针,当select这条语句执行之后,sqlite3 会去调用你提供的这个函数。
  • @arg: 当执行 sqlite3_exec 的时候传递给回调函数的参数。
  • @errmsg:记录sqlite3_exec的错误信息

返回值:

  • 成功 SQLITE_OK
  • 失败 非SQLITE_OK

2.1.1 回调函数指针

typedef int callback (void *para,
int n_column,
char **column_value,
char **column_name
);

功能:此函数由用户定义,当 sqlite3_exec 函数执行 sql 语句后,结果集不为空时sqlite3_exec 函数会自动调用此函数,每次调用此函数时会把结果集的一行信息传给此函数。

参数:

  • @para: sqlite3_exec 传给此函数的参数,para 为任意数据类型的地址。
  • @n_column: 结果集的列数。
  • @column_value:指针数组的地址,其存放一行信息中各个列值的首地址。
  • @column_name:指针数组的地址,其存放一行信息中各个列值对应列名的首地址。

返回值:
若为非0 值,则通知 sqlite3_exec 终止回调

2.2 sqlite3_get_table 函数

int sqlite3_get_table(sqlite3 *db,
const char *sql,
char ***resultp,
int *nrow,
int *ncolumn,
char **errmsg
);

功能:

执行 sql 指向的 SQL 语句,函数将结果集相关的数据的地址保存在函数的参数中。

参数:

  • @db:数据库的标识。
  • @sql:SQL 语句(一条或多条),以’;’结尾。
  • @resultp:指针数组的地址,其记录了结果集的数据。
  • @nrow:结果集的行数(不包含列名)。
  • @ncolumn:结果集的列数。
  • @errmsg:错误信息。

2.3 sqlite3_free_table 函数

void sqlite3_free_table(char **resultp);

功能:

释放 sqlite3_get_table 分配的内存。

参数:

结果集数据的首地址。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 16:15:55

Llama-3.2V-11B-cot创意应用:辅助JavaScript动态网页内容生成

Llama-3.2V-11B-cot创意应用:辅助JavaScript动态网页内容生成 1. 引言 你有没有遇到过这样的场景?产品经理丢过来一份详细的产品描述文档,要求你快速搭建一个动态的商品展示页面。或者,用户反馈说某个按钮的交互逻辑不够流畅&am…

作者头像 李华
网站建设 2026/7/14 16:15:54

SpringAI整合ZhiPu AI实战:从配置到流式响应的完整指南

SpringAI整合ZhiPu AI实战:从配置到流式响应的完整指南 在当今快速发展的AI应用领域,将大模型能力无缝集成到现有系统中已成为开发者必备技能。SpringAI作为Spring生态中的AI集成框架,为开发者提供了统一便捷的API来对接各类AI服务。本文将深…

作者头像 李华
网站建设 2026/7/14 16:15:46

AI免费生成流程图

工具地址:https://draw.anqstar.com 一、技术背景与问题引入:可视化困境下,AI成为破局关键 在数字化时代,流程图作为逻辑梳理、沟通协作、成果呈现的核心工具,已深度渗透到各个领域,但不同人群在使用过程…

作者头像 李华
网站建设 2026/7/14 16:15:55

PS软件操作技巧问答:Phi-3-mini-128k-instruct充当设计助手

PS软件操作技巧问答:Phi-3-mini-128k-instruct充当设计助手 你是不是也遇到过这种情况?在Photoshop里想给人物换个背景,但发丝边缘怎么抠都显得生硬;想做个炫酷的金属字效,却记不清具体用了哪些图层样式;面…

作者头像 李华
网站建设 2026/7/14 16:16:09

影刀千牛智能客服实战:高并发场景下的架构设计与性能优化

最近在负责一个电商平台的客服系统重构,刚好用到了影刀千牛智能客服,来应对大促期间的海量咨询。之前的老系统一到双十一、618这种节点就“罢工”,用户排队、消息延迟、甚至整个客服后台卡死,体验非常糟糕。这次重构,我…

作者头像 李华
网站建设 2026/7/14 16:15:56

Zenodo:构建科研数据开放共享的基础设施 赋能全球知识生态创新

Zenodo:构建科研数据开放共享的基础设施 赋能全球知识生态创新 【免费下载链接】zenodo Research. Shared. 项目地址: https://gitcode.com/gh_mirrors/ze/zenodo 价值定位:重新定义科研数据的生命周期管理 在学术研究数字化转型的浪潮中&#x…

作者头像 李华