Sqlite3数据库基本使用
一、基本概念
数据:能够输入计算机并能被计算机程序识别和处理的信息集合
数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合
DBMS:位于用户与操作系统之间的一层数据管理软件,用于操纵和管理数据库
二、安装
在线安装:
sudo apt-get install sqlite3 安装数据库软件
sudo apt-get install libsqlite 安装数据库的函数库
离线安装:
sudo dpkg -i sqlite3_3.22.0-1ubuntu0.4_amd64.deb 离线安装数据库软件
sudo dpkg -i libsqlite3-dev_3.22.0-1ubuntu0.4_amd64.deb 离线安装数据库的函数库
- 注:离线安装包可以从官网获取 https://www.sqlite.org/
验证是否安装好:
输入sqlite3,进入下面的界面说明安好了
三、使用
(一)系统命令
不同的数据库的系统命令不一样,取决于数据库的开发者
.help 查看帮助手册
.exit 退出数据库程序
.quit 退出数据库程序 使用 .q 也可以
.open 打开数据库文件
.tables 列出数据库中所有的数据表
.schema 查看表结构(建表语句)
.headers on|off 查询的结果是否显示表头信息 on 显示 off 不显示
注意:sqlite3数据库需要先打开数据库文件再操作,否则所有的操作都是在内存上的,数据不会被保存在硬盘,当数据库程序退出时,数据就丢了。
打开数据库文件的方式:
方式1:先使用sqlite3
命令进入到sqlite3数据库的终端
然后在终端上使用.open 数据库文件名
的方式打开数据库文件
方式2:也可以直接使用 sqlite3 数据库文件名
的方式打开数据库文件并进入数据库的终端
数据库文件名只要符合命名规范即可,但是一般我们书写时都以.db
结尾方便识别。
(二)关系型数据库表
- 一个数据库文件中,可以有多个数据表,且每个数据表的结构可以不一样
(三)sql语句
- 只要是关系型数据库,sql语句都通用
- sql语句不能以 “
.
” 开头,结尾要加 “;
” - sql语句中关键字不区分大小写,但是一般写成大写,方便区分
- sql语句中的字符串需要用单引号或者双引号引起来
1. 建表语句
新创建的数据库文件中是没有数据表的,需要自己创建
//注意:新创建的数据库文件中是没有数据表的 需要我们自己创建CREATE TABLE 表名(字段名1 字段类型1, 字段名2 字段类型2, ...);字段类型:整形 INT 或者 INTEGER字符串 CHAR 或者 TEXT例如:CREATE TABLE student(id INT, name CHAR, score INTEGER);
2. 插入语句
//sql语句中的字符串需要用 单引号 或者 双引号 引起来//这种插入方式必须从左到右给每个字段都赋值INSERT INTO student VALUES(1001, "zhangsan", 98);//如果只想给指定的字段赋值 可以用下面的用法INSERT INTO student(id, name) VALUES(1003, "wangwu");
3. 查询语句
//查询所有记录的所有字段的内容//其中 * 表示 所有字段SELECT * FROM student;//查询表中所有记录的 name 和 score 字段SELECT name,score FROM student;//查询表中所有name='zhangsan' 的记录的所有字段SELECT * FROM student WHERE name='zhangsan';//多个条件 可使用 AND 或者 OR 连接// AND 并且 OR 或者//查询表中所有 name='zhangsan'并且score=98 的记录的所有字段SELECT * FROM student WHERE name='zhangsan' AND score=98;//查询表中所有name="zhangsan"的记录的 id 字段SELECT id FROM student WHERE name="zhangsan";//对查询结果可以排序// ORDER BY 字段名 根据哪个字段排序// ASC 升序 DESC 降序 不写时 默认是升序//查询表中所有name="zhangsan"的记录的所有字段 且结果根据成绩降序排序SELECT * FROM student WHERE name="zhangsan" ORDER BY score DESC;
4. 更新语句
//把所有id=1005的记录的 score 字段的值都改成100UPDATE student SET score=100 WHERE id=1005;//一次该多个字段时 中间用 逗号 分隔UPDATE student SET score=80,name='lihua' WHERE id=1007;//注意:即使没有满足条件的记录 语句执行也不会报错 只不过没有现象发生
- 注:即使没有满足条件的记录,语句执行也不会报错,只不过没有现象发生
5. 删除语句
//删除表中所有 name="zhangsan" 或者 id=1003 的所有记录DELETE FROM student WHERE name='zhangsan' OR id=1003;//注意:即使没有满足条件的记录 语句执行也不会报错 只不过没有现象发生
- 注:即使没有满足条件的记录,语句执行也不会报错,只不过没有现象发生
6. 删除表
DROP TABLE 表名;
7. 对列的操作(一般不会用到)
添加一列ALTER TABLE student ADD COLUMN sex CHAR;删除一列sqlite3 不允许直接删除一列1)先创建一张新表CREATE TABLE temp AS SELECT id,name FROM student;2)删除原来的旧表DROP TABLE student;3)对新表重命名ALTER TABLE temp RENAME TO student;
8. 主键
主键 PRIMARY KEY 在建表时可以自定某一个字段为 主键 然后在后插入的过程中CREATE TABLE student(id INT PRIMARY KEY, name TEXT, score INT);
- 注:主键必须保持唯一, 如果插入重复主键的记录 会报错:主键冲突
四、常用的API接口函数
使用sqlite3数据的函数 编码时 需要加头文件 #include <sqlite3.h>
编译时,需要连接sqlite3数据库的库 -lsqlite3
(一)API接口函数
1. 打开和关闭数据库文件
int sqlite3_open(const char *filename,/* Database filename (UTF-8) */sqlite3 **ppdb /* OUT: SQLite db handle */ );功能:打开一个数据库 存在就直接打开 不存在就新建并打开参数:filename 数据库文件的路径和名字ppdb 操作数据库的指针,句柄。返回值:成功 SQLITE_OK失败 error_codeint sqlite3_close(sqlite3 *db);功能:关闭一个数据库
2. 获取错误信息描述
const char *sqlite3_errmsg(sqlite3 *db);功能:获取数据库句柄db对应的最后一次错误信息描述
3. 执行sql语句
int sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void *, int, char **, char **),void *arg, char **errmsg);功能:执行一条sql语句参数:db 数据库的句柄指针sql 将要被执行sql语句callback 回调函数,只有在查询语句时,才会使用回调函数arg 为callback 传参的,只有在查询语句时,才给回调函数传参errmsg 错误信息的地址如果使用了 需要手动调用 sqlite3_free 来释放空间 防止内存泄漏返回值:成功 SQLITE_OK出错 errcode 错误码补充:释放sqlite3_exec第五个参数占用的空间void sqlite3_free(void *p);
sqlite3_exec 函数的回调函数 callback
int callback(void *arg, int ncolumn, char **f_value, char **f_name)功能:得到查询结果参数:arg 为回调函数传递参数使用的ncolumn 记录中包含的字段的数目f_value 包含每个字段值的指针数组f_name 包含每个字段名称的指针数组返回值:成功 0出错 非0
- 注:
- 程序中写sql语句,结尾无需加分号,因为字符串结尾有\0来标识字符串结束。
IF NO EXISTS
标识如果存在就使用,不报错;
CREATE TABLE IF NOT EXISTS student(id INT PRIMARY KEY, name CHAR, score INT)
4. 查询数据库的函数
查询数据库的函数int sqlite3_get_table(sqlite3 *db, const char *zSql,char ***pazResult, int *pnRow, int *pnColumn, char **pzErrmsg);功能:查询数据库,它会创建一个新的内存区域来存放查询的结果信息参数:db 数据库操作句柄sql 数据库的sql语句pazResult 查询的结果nRow 行数--不包含字段名nColumn 列数errmsg 错误消息 //和前面一样 如果使用了 要记得使用 sqlite3_free 释放空间返回值:成功 0出错 errcode释放 sqlite3_get_table 函数产生的结果集void sqlite3_free_table(char **result)
相关文章:
![](https://img-blog.csdnimg.cn/direct/4edc25bcaa6e4ee8aaaaca29907c3701.png)
Sqlite3数据库基本使用
一、基本概念 数据:能够输入计算机并能被计算机程序识别和处理的信息集合 数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合 DBMS:位于用户与操作系统之间的一层数据管理软件,用于操纵和管理数据库 二、安装 在线…...
![](https://img-blog.csdnimg.cn/direct/70b015c5f44b4d74967b95a33ba281af.png)
实现贪吃蛇小游戏【简单版】
1. 贪吃蛇游戏设计与分析 1.1 地图 我们最终的贪吃蛇大纲要是这个样子,那我们的地图如何布置呢? 这里不得不讲⼀下控制台窗口的⼀些知识,如果想在控制台的窗口中指定位置输出信息,我们得知道该位置的坐标,所以首先介…...
![](https://www.ngui.cc/images/no-images.jpg)
uniapp实现内嵌其他网页的功能
一、用到的知识点 页面跳转页面间跳转,参数传递web-view使用 二、使用navigator 页面跳转。 navigator 组件类似HTML中的<a>组件,但只能跳转本地页面。目标页面必须在pages.json中注册。所以这么写是不行的: <navigator url&quo…...
![](https://www.ngui.cc/images/no-images.jpg)
【Ruby简单脚本01】查看wifi密码
脚本 # 使用io库 def get_cmd_result(cmd) IO.popen(cmd,:external_encoding>GBK).read.encode("utf-8") end def list_wifi wifi_pwds Hash.new # 获取所有wifi文件 o1 get_cmd_result("netsh wlan show profiles") # 获取所有匹配结果 …...
![](https://img-blog.csdnimg.cn/img_convert/047976793ef516c92fdb18a10c2beed9.png)
VSG/VSA 矢量信号模拟/分析软件
_Ceyear思仪 _ VSG/VSA 矢量信号模拟/分析软件 苏州新利通仪器仪表 在现代无线通信中,IQ调制属于标准配置,经常应用于通信系统的信号调制和解调环节。IQ调制的应用简化了通信设备的硬件结构,同时提高了频谱资源的利用效率,提…...
![](https://www.ngui.cc/images/no-images.jpg)
C++使用GDAL库完成tiff图像的合并
全色图 完整代码: #include "gdal_priv.h" #include "cpl_string.h" #include <vector> #include <algorithm> #include <iostream> #include <filesystem>using namespace std; namespace fs std::filesystem; vec…...
![](https://www.ngui.cc/images/no-images.jpg)
深入理解AQS:Java并发编程中的核心组件
目录 AQS简介AQS的设计思路AQS的核心组成部分 状态(State)同步队列(Sync Queue)条件队列(Condition Queue) AQS的内部实现 节点(Node)锁的获取与释放 独占锁共享锁 条件变量 AQS的应…...
![](https://img-blog.csdnimg.cn/direct/cd118c0f23db453296124bc785dd6072.png)
集合进阶:List集合
一.List集合的特有方法 1.Collection的方法List都继承了 2.List集合因为有索引,所以多了很多索引操作的方法。 3.add // 1.创建一个集合List<String> list new ArrayList<>(); // 2.添加元素list.add("aaa");list.add("bbb"…...
![](https://img-blog.csdnimg.cn/direct/82a3c0d0ebe94ceebcf06b199dcb795b.png)
el-table表头修改文字或者背景颜色,通过header-row-style设置样式
方式一 <el-table :header-cell-style"{text-align: center}" />方式二 <template><el-table :header-cell-style"tableHeaderColor" /> </template> <script> export default {methods: {tableHeaderColor ({row, column…...
![](https://img-blog.csdnimg.cn/direct/6d8d151cded2438ca00b66aecf76c38e.png)
web前端-CSS
CSS CSS概述: CSS是Cascading Style Sheets(级联样式表),是一种样式表语言,用于控制网页布局,外观(比如背景图片,图片高度,文本颜色,文本字体,高级定位等等) 可将页面的内容与样式分离开,样式放于单独的.css文件或者HTML某处 CSS是网页样式,HTML是网页…...
![](https://www.ngui.cc/images/no-images.jpg)
u8g2 使用IIC驱动uc1617 lcd 字符显示只显示上半部分,不显示下半部
使用u8g2 使用硬件iic驱动某些page为4个字节 带灰度的lcd显示屏幕的时候有时候只显示上半部,下半部不显示,例如uc1617等。 原因: 以uc1617为例,链接https://github.com/olikraus/u8g2/blob/master/csrc/u8x8_d_uc1617.c 在u8x8_d_uc1617_common方法中的case U8X8_MSG_DI…...
![](https://img-blog.csdnimg.cn/direct/485ad4c1278645a7abd5b9241bbb7a1e.png)
单片机第五季-第八课:STM32CubeMx和FreeRTOS
1,FreeRTOS背景介绍 RTOS简介: 实时操作系统,本用于追求实时性的嵌入式系统,典型:ucos/uclinux/vxworks; 特点:中断响应快、一般可嵌套中断、使用实地址、多任务; (实…...
![](https://img-blog.csdnimg.cn/direct/2dd2d00d70504936a820b14fc8e1cf97.png)
【Linux】进程控制1——进程创建和进程终止
1.进程创建 1.1.再谈fork 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。 #include <unistd.h> pid_t fork(void);//pid_t为整形 返回值:子进程中的fork()返回0ÿ…...
![](https://img-blog.csdnimg.cn/direct/220a8852f6dc4a6ba5dc2f73c24a4902.png)
计算机图形学入门16:曲线
1.曲线 曲线(Curves)在图形学中应用非常广泛,比如:相机的拍摄路径、物体的移动路径、动画曲线、矢量字体等。如下图所示,是使用曲线到矢量字体的应用,通过移动一些控制点来改变字体。 2.贝塞尔曲线 2.1 贝…...
![](https://img-blog.csdnimg.cn/7cca864db76b46f1ba479780b00752d9.png)
【Ruby基础01】windows和termux中搭建Ruby开发环境
windows下环境搭建 railsinstaller官方git地址 按照文档安装git、nodejs、yarn,安装教程百度一下。railsinstall可以从release页面下载最新版本4.1.0。 安装完成如下 安装RubyMine 下载RubyMine RubyMine下载地址 安装激活 下载文件,按照里面的流程…...
![](https://www.ngui.cc/images/no-images.jpg)
2406c++,iguana动态反射
原文 iguana是一个基于编译期反射的序化库,支持从结构序化到不同数据格式. iguana可序化一个C结构到json,xml,yaml和protobuf格式.这都是通过编译期反射实现的. 现在iguana也支持了动态反射,主要特征: 1,通过对象名创建对象实例 2,取对象所有字段名 3,根据字段名取字段值 4,根…...
![](https://www.ngui.cc/images/no-images.jpg)
干货分享——AB站帮你解决独立站收款难题
目前,国内已经有抖音、拼多多和淘宝平台推出“仅退款”售后服务,无疑是加剧了原本就在疯狂打价格战的国内电商的严峻现状,使得商家不得不担心被顾客“薅羊毛”。在国内电商环境严重“内卷”的情况下,拓宽海外市场不失为一大妙计。…...
![](https://www.ngui.cc/images/no-images.jpg)
C++继承与派生
1.基本知识 类的继承是新类从已有类那里获得特性,从已有的类产生新类的过程称为类的派生; 已有类称为基类或父类,派生出的新类则称为派生类或子类; 继承的功能: (1)使得基类与派生类之间建立…...
![](https://img-blog.csdnimg.cn/direct/103614c14c1046c4a9e9819f7e112c7c.jpeg)
Survival Animations
一套生存游戏的动画集,包括采集、建造、捕鱼、剥皮/鞣制、篝火等更多内容。 总动画数:89 建造/制作 30 篝火 28 饮水 3 水壶 3 觅食 2 治疗 3 空闲 1 原始捕鱼 7 剥皮 1 矛捕鱼 4 伐木 5 下载:Unity资源商店链接资源下载链接 效果图:...
![](https://www.ngui.cc/images/no-images.jpg)
Cargo 教程
Cargo 教程 1. 引言 Cargo 是 Rust 编程语言的包管理器和构建工具。它为 Rust 项目提供了依赖管理、编译和打包等功能。本教程将详细介绍 Cargo 的基本用法,帮助您快速上手 Rust 项目开发。 2. 安装 Cargo 在开始使用 Cargo 之前,您需要确保已经安装了 Rust 编程语言。Ru…...
![](https://img-blog.csdnimg.cn/direct/59951089d4584d91aa5f63d68292f63e.png)
linux中“PXE高效批量装机”
在大规模的 Linux 应用环境中,如 Web 群集、分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的 USB光驱、移动硬盘等安装方法显然已经难以满足需求。 PXE …...
![](https://img-blog.csdnimg.cn/direct/02dfb451f0d346d79877d96abfb87670.png)
emm, ComfyUI的作者从Stability.AI离职了
🍖背景 今天在更新ComfyUI的过程中,看到Manager中有这样一段描述: 嗯?做了新的官方网站?然后开始新篇章? 难道说ComfyUI的作者从Stability.AI离职了? 赶紧点开链接看了下,emm&…...
![](https://img-blog.csdnimg.cn/direct/bd943775a0d849dbae2046c1247e4e84.png)
Redis-五种数据结构之列表(ziplist、quicklist)
列表 文章目录 列表压缩列表-ziplistziplist 定义级联更新 快速列表-quicklistquicklistNode 定义quicklist 定义quicklist常用操作其他操作quicklist 相对于普通链表优点quick应用场景在redis 中使用quicklist 列表数据类型可以存储一组按插入顺序排序的字符串,他很…...
![](https://img-blog.csdnimg.cn/direct/ae81db65077b4bb99e63473277ec178f.png)
记一次全设备通杀未授权RCE的挖掘经历
想来上一次挖洞还在一年前的大一下,然后就一直在忙活写论文,感觉挺枯燥的(可能是自己不太适合弄学术吧QAQ),所以年初1~2月的时候,有空的时候就又会挖一挖国内外各大知名厂商的设备,拿了几份思科…...
![](https://img-blog.csdnimg.cn/direct/89f230c8f6d04e1997420940fba056a3.png)
【数据库编程-SQLite3(一)】sqlite3数据库在Windows下的配置及测试
学习分析 1、资源准备2、环境配置2.1、将资源包下载解压缩保存。2.2、在QT中创建工程,配置环境 3、测试配置3.1、 sqlite3_open函数3.2、sqlite3_close函数3.3、代码测试 1、资源准备 资源包 2、环境配置 2.1、将资源包下载解压缩保存。 解压缩得到以下文件 2.2、在QT中创建…...
![](https://img-blog.csdnimg.cn/direct/cf86a8e35c8d40e08044da9f112071c7.png)
YOLOv10改进 | 主干篇 | YOLOv10引入华为VanillaNet替换Backbone
1. VanillaNet介绍 1.1 摘要: 基础模型的核心是“越多越好”的理念,计算机视觉和自然语言处理领域取得的惊人成功就是例证。 然而,优化的挑战和变压器模型固有的复杂性要求范式向简单性转变。 在这项研究中,我们介绍了 VanillaNet,一种设计优雅的神经网络架构。 通过避免…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ 迷宫问题
描述 定义一个二维数组 N*M ,如 5 5 数组下所示: int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走…...
![](https://www.ngui.cc/images/no-images.jpg)
【Linux】Linux文件系统中主要文件夹列举_作用说明
在Linux系统中,文件夹(或称为目录)的组织结构是系统功能和用户数据的重要组成部分。以下是Linux系统中一些主要文件夹的列举及其作用说明: / (根目录): 是Linux文件系统的起点。通常只包含其他目录,不建议直接在其中存…...
![](https://img-blog.csdnimg.cn/direct/65e6d218d37b4a3ca456db30ee7b9113.png#pic_center)
移植案例与原理 - HDF驱动框架-驱动配置(1)
HCS(HDF Configuration Source)是HDF驱动框架的配置描述源码,内容以Key-Value为主要形式。它实现了配置代码与驱动代码解耦,便于开发者进行配置管理。应该,类似Linux DTS(Device Tree Source)设备树。 HC-GEN(HDF Configuration Generator)是…...
![](https://img-blog.csdnimg.cn/direct/7ca2491519c84665a5de51baa17bd097.png)
坚持刷题|反转链表
文章目录 题目思考实现1. 迭代方式实现链表翻转2. 递归方式实现链表翻转 Hello,大家好,我是阿月。坚持刷题,老年痴呆追不上我,今天继续链表:反转链表 题目 LCR 024. 反转链表 思考 翻转链表是一个常见的算法问题&a…...
![](https://img-blog.csdnimg.cn/img_convert/e2d009077e6a69439fb35417412e18ff.png)
怎么在新建网站上做分享代码/成都新一轮疫情
V8 JavaScript 团队宣布优化异步函数和 promises 对象。团队还提升了异步代码的调试体验,这也是 JavaScript 开发人员的共同痛点。正文V8 JavaScript 团队宣布优化了异步函数和 promises 对象。团队还提升了异步代码的调试体验,这也是 JavaScript 开发人…...
![](/images/no-images.jpg)
网站怎么做桌面快速链接/灰色关键词排名技术
自付款状态查询 签约通知 贷款详情查询 贷款申请列表查询 受托支付结果通知 授信审批结果 风控结果通知 放款结果通知 还款结果通知 接口地址...
![](https://img-blog.csdnimg.cn/img_convert/72dd548719f0ace4d5f9bca64e1d7715.png)
网站建设前言/网络营销产品的首选产品
登录weblogic管控制台http://127.0.0.1:7001/console,Service->Jdbc->DataSources,点击lock&edit,建立数据源,并测试成功。测试weblogic92配置的jndi数据源的java代码package com.css.test;import java.sql.Connection;…...
![](http://www.leiphone.com/wp-content/uploads/2011/11/55555.jpg)
网站建设推广哪家专业/怎么优化网站
在最新发布的《百度移动互联网发展趋势报告2011年Q3》中,百度无线和易观国际依托百度移动搜索数据,结合易观智库的应用数据补充,从用户分布及网络接入、移动终端竞争格局及趋势、移动终端平台变化趋势、手机浏览器竞争格局及发展趋势、 应用商…...
![](https://www.oschina.net/img/hot3.png)
用什么软件做动漫视频网站好/线上营销模式有哪些
2019独角兽企业重金招聘Python工程师标准>>> RestTemplate可以使用loadBalanced,但加上了oauth2的restTemplate 就识别不到服务名称了。 这个是个蛋疼的问题。 查了一天的github,发现了这是一个bug。 spring-cloud-security问题 看了半天也没…...
![](https://img-blog.csdnimg.cn/img_convert/89f4638c28aeb2e3e343c17a874cbddf.png)
到做任务的网站上面推广粉象生/独立站seo优化
计算机二级VB语言程序设计考试题及答案为帮助同学们复习好二级VB考试科目,大家平时需要多做题多练习。接下来应届毕业生小编为大家精心准备了计算机二级VB语言程序设计考试题及答案,希望能够给大家带来帮助!1.在窗体上画一个名称为Text1的文本框…...