当前位置: 首页 > news >正文

Linux下的网络编程SQLITE3详解

常用数据库

关系型数据库

将复杂的数据结构简化为二维表格形式

大型:Oracle、DB2

中型:MySql、SQLServer

小型:Sqlite

非关系型数据库

以键值对存储,且结构不固定

JSON

Redis

MongoDB

sqlite数据库

特点

开源免费,C语言开发

代码量少,1万行左右,总大小10M以内

文件型数据库,可以移动,跨平台移植性好

理论数据容量最大2T

安装sqlite3数据库

版本:sqlite3.22.0

安装命令:
sudo apt-get install sqlite3

安装相关库:
sudo apt-get install libsqlite3-dev

测试:
sqlite3 xxx.db

sqlite3学习

支持的数据类型

NULL:空值

INTEGER:整形

REAL:浮点型

TEXT:字符串类型

BLOB:根据输入进行存储

sqlite3相关的命令

.help:查看支持的命令

.tables:查看当前数据库中的表

.headers on/off:打开或者隐藏表头

.mode column:设置列左对齐

.quit:退出数据库

sqlite3支持的SQL语句
注意事项

SQL语句后面必须要有分号

sqlite不区分大小写

创建表

语法:
create table 表名(列名1 数据类型, 列名2 数据类型, 列名3 数据类型)

示例:
create table class1(id INTEGER, name TEXT, age INTEGER, score REAL)

数据插入

语法:
insert into 表名 values(值1, 值2, 值3)

示例:
insert into class1 values(1, "zhangsan", 19, 88.5)

查询数据

查询所有列数据:
select * from 表名

查询指定列数据:
select 列名1, 列名2, 列名n from 表名

条件查询:
select * from 表名 where 列 条件

关系运算符:>, <, >=, <=, =, !=, and (&&), or (||)

模糊查找(字符串):

select * from 表名 where 列 like "%梅"

select * from 表名 where 列 like "__梅"%:可以模糊匹配多个

字符_:只能模糊匹配一个字符

排序查找:

升序排序:

select * from 表名 order by 列名 ASC

降序排序:select * from 表名 order by 列名 DESC

删除数据

语法:
delete from 表名 where 删除的条件

示例:
delete from class1 where score < 80

修改数据

语法:
update 表名 set 列 = 新值 where 条件

示例:
update class1 set score = 100 where name = "wanger"

删除一张表

语法:
drop table 表名

设置主键值自动增长列

注意:

主键值自动增长列必须是INTEGER类型

在创建表时,主键值自动增长列要增加:PRIMARY KEY AUTOINCREMENT

示例:
create table class2(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score REAL)

插入数据时,主键值自动增长列给NULL,让其自动增长

示例:
insert into class2 values(NULL, "张三", 90)

时间相关

date("now"):年-月-日

datetime("now", "+8 hours"):年-月-日 时:分:秒

sqlite的可视化工具

安装命令:
sudo apt-get install sqlitebrowser

使用方法:
sqlitebrowser xxx.db

sqliite3提供的C/C++ API(应用程序接口)
sqlite3_open
  int sqlite3_open(const char *filename,   /* Database filename (UTF-8) */sqlite3 **ppDb          /* OUT: SQLite db handle */);

功能:打开一个数据库文件

参数:

filename:数据库名称

ppDb:保存数据库句柄的指针的地址

返回值:

成功:SQLITE_OK

失败:错误码

sqlite3_close
  int sqlite3_close(sqlite3*);

功能:关闭数据库

sqlite3_exec
int sqlite3_exec(sqlite3*pdb,                                  /* 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 */);

功能:执行SQL语句

参数:

pdb:数据库句柄

sql:要执行的sql语句

callback:执行select语句时使用的回调函数

arg:给回调函数传递的参数(实参)

errmsg:保存出错信息

返回值:

成功:SQLITE_OK

失败:错误码

回调函数

功能:执行select语句时调用的回调函数

参数:

arg:sqlite3_exec传递的第四个参数

column:查询到的数据的列数

column_values:指针数组,多个指针分别指向每一列数据的字符串

column_name:指针数组,多个指针指向每一列的列名

注意:回调函数成功的话必须要有返回值,返回0

从数据库查询出来的数据,统统是字符串类型

从数据库中查询数据,查到几条,回调函数就会被执行几次

http://www.dtcms.com/a/356463.html

相关文章:

  • 神经语言学视角:脑科学与NLP深层分析技术的交叉融合
  • Java的CAS机制:无锁并发控制及其高频面试题
  • OpenCSG月度更新2025.8
  • 1 分钟 Maya 动画渲染要多久?5 天还是 5 小时
  • 基于Java、GeoTools与PostGIS的GeoJSON动态属性注入实战指南
  • 在 Go 项目的 DDD 分层架构中,Echo Web 框架及其 middleware 应该归属到哪一层?
  • mysql安全运维之安全模型与原则-构建坚不可摧的数据库防护体系
  • 自然语言提取PDF表格数据
  • 电影交流|基于SprinBoot+vue的电影交流平台小程序系统(源码+数据库+文档)
  • 在基于 Go 的 DDD 分层架构中,包含多个server的项目目录结构应如何组织?
  • LoraConfig target modules加入embed_tokens(64)
  • 设计模式-行为型模式-命令模式
  • Spring 微服务架构下的单元测试优化实践:从本地连接到真实开发数据库的集成测试
  • Qt节点编辑器设计与实现:动态编辑与任务流可视化(一)
  • WebStorm-在WebStorm中使用Git管理项目
  • 【WPF】WPF 自定义控件实战:从零打造一个可复用的 StatusIconTextButton (含避坑指南)
  • 循环高级(2)
  • 面试八股文之——JVM与并发编程/多线程
  • Azure、RDP、NTLM 均现高危漏洞,微软发布2025年8月安全更新
  • 【物联网】什么是 DHT11(数字温湿度传感器)?
  • C++ 编译和运行 LibCurl 动态库和静态库
  • SyncBack 备份同步软件: 使用 FTPS、SFTP 和 HTTPS 安全加密传输文件
  • 【2025 完美解决】Failed connect to github.com:443; Connection timed out
  • 网络编程(2)—多客户端交互
  • 跨境物流新引擎:亚马逊AGL空运服务赋能卖家全链路升级
  • Pycharm 登录 Github 失败
  • idea2023.3遇到了Lombok失效问题,注释optional和annotationProcessorPaths即可恢复正常
  • “FAQ + AI”智能助手全栈实现方案
  • 极飞科技AI智慧农业实践:3000亩棉田2人管理+产量提15%,精准灌溉与老农操作门槛引讨论
  • autojs RSA加密(使用public.pem、private.pem)