【C++】开源:sqlite3数据库配置使用

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍sqlite3数据库配置使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 项目介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明

😏1. 项目介绍

项目Github地址:https://github.com/sqlite/sqlite

SQLite 是一种嵌入式的关系型数据库管理系统,它是一个开源项目,已经被广泛应用于各种应用程序和操作系统中。以下是一些 SQLite 的特点:

1.轻量级:SQLite 是一个非常轻量级的数据库系统,它的设计目标之一是简单、高效、占用资源少。SQLite 的核心库非常小巧,以静态或动态链接方式与应用程序集成,使得它适用于嵌入式设备和资源受限的环境。

2.无服务器架构:SQLite 是一种无服务器架构的数据库,意味着它不需要单独的数据库服务器进程,数据库操作直接在应用程序内部进行。这种架构使得 SQLite 在本地应用和单用户场景中非常方便和易用。

3.单一文件存储:SQLite 数据库以单一文件的形式存储在磁盘上,这个文件可以包含整个数据库结构和数据。这种单一文件存储的特点使得 SQLite 数据库非常易于备份、传输和部署。

4.支持标准 SQL:SQLite 支持标准的 SQL 查询语言,包括常见的增删改查操作、视图、触发器、索引等功能。它遵循 ANSI-SQL 标准,并且提供了丰富的数据类型和内置函数支持。

5.ACID 事务支持:SQLite 支持 ACID(原子性、一致性、隔离性和持久性)事务,可以确保数据库操作的可靠性和一致性。它使用写-读锁定来实现并发控制和多用户访问。

6.跨平台:SQLite 是跨平台的数据库系统,它可以运行在各种操作系统上,包括 Windows、macOS、Linux、Android 等。

7.开源和自由:SQLite 是一个完全开源的项目,遵循公共领域(Public Domain)版权协议,可以免费使用、复制和分发。

SQLite 具有的这些特点使得它成为一种非常流行的数据库选择,尤其适合于小型和中小型的应用程序、移动应用、嵌入式设备等场景。无论是作为独立的数据库引擎还是与其他编程语言和框架集成,SQLite 提供了一种轻便、灵活和可靠的解决方案。

😊2. 环境配置

下面进行环境配置:

ubuntu可直接apt安装,另外可安装sqlitebrowser可视化工具便于管理。

# 安装sqlite3
sudo apt install sqlite3 libsqlite3-dev
sqlite3 --version
sqlite3 test.db
# 安装sqlitebrowser
sudo apt-get install sqlitebrowser
sqlitebrowser test.db

sqlite常用命令:

.databases:列出当前连接的数据库
.tables:列出当前数据库中的表
.schema tablename:显示指定表的结构
CREATE TABLE tablename (column1 datatype, column2 datatype, ...);:创建表
INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...);:插入数据
SELECT * FROM tablename;:查询表中的数据
UPDATE tablename SET column1=value1, column2=value2 WHERE condition;:更新表中的数据
DELETE FROM tablename WHERE condition;:删除表中的数据
.exit:退出命令行

😆3. 使用说明

下面进行使用分析:

数据库创建、插入、查询、关闭示例:

#include <iostream>
#include <sqlite3.h>

int main(int argc, char** argv) {
    sqlite3* db;
    char* errorMsg = nullptr;

    // 打开或创建数据库文件
    int rc = sqlite3_open("example.db", &db);
    if (rc != SQLITE_OK) {
        std::cout << "无法打开数据库: " << sqlite3_errmsg(db) << std::endl;
        return rc;
    }

    // 创建表
    const char* createTableQuery = "CREATE TABLE IF NOT EXISTS employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
    rc = sqlite3_exec(db, createTableQuery, nullptr, nullptr, &errorMsg);
    if (rc != SQLITE_OK) {
        std::cout << "无法创建表: " << errorMsg << std::endl;
        sqlite3_free(errorMsg);
        sqlite3_close(db);
        return rc;
    }

    // 插入数据
    const char* insertDataQuery = "INSERT INTO employees (id, name, age) VALUES (1, 'Alice', 25)";
    rc = sqlite3_exec(db, insertDataQuery, nullptr, nullptr, &errorMsg);
    if (rc != SQLITE_OK) {
        std::cout << "无法插入数据: " << errorMsg << std::endl;
        sqlite3_free(errorMsg);
        sqlite3_close(db);
        return rc;
    }

    // 查询数据
    const char* selectDataQuery = "SELECT * FROM employees";
    rc = sqlite3_exec(
        db,
        selectDataQuery,
        [](void* data, int argc, char** argv, char** colNames) -> int {
            for (int i = 0; i < argc; i++) {
                std::cout << colNames[i] << " = " << argv[i] << std::endl;
            }
            return 0;
        },
        nullptr,
        &errorMsg
    );
    if (rc != SQLITE_OK) {
        std::cout << "无法查询数据: " << errorMsg << std::endl;
        sqlite3_free(errorMsg);
        sqlite3_close(db);
        return rc;
    }

    // 关闭数据库连接
    sqlite3_close(db);

    return 0;
}

编译运行:

g++ -o main main.cpp -lsqlite3 && ./main

在这里插入图片描述

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/60060.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

winform学习(3)-----Windows窗体应用和Windows窗体应用(.Net Framework)有啥区别?

1.模板选择 在学习winform的时候总是会对这两个应用不知道选择哪个&#xff1f;而且在学习的时候也没有具体的说明 首先说一下我是在添加控件的时候出现了以下问题 对于使用了Windows窗体应用这个模板的文件在工具箱中死活不见控件。 在转换使用了Windows窗体应用(.NET Fram…

性价比最高的护眼台灯是哪一款?性价比高的护眼台灯盘点

现在的孩子&#xff0c;不是以往的孩子那么的无忧无虑&#xff0c;他们要考虑的是学习的成绩&#xff0c;所以很多孩子为了能在父母面前能得到夸奖&#xff0c;就努力的学习&#xff0c;那么台灯就不可缺少&#xff0c;但是如今市场上的台灯太多了&#xff0c;如果你购买的台灯…

element表格+表单+表单验证结合u

一、结果展示 1、图片 2、描述 table中放form表单&#xff0c;放输入框或下拉框或多选框等&#xff1b; 点击添加按钮&#xff0c;首先验证表单&#xff0c;如果存在没填的就验证提醒&#xff0c;都填了就向下添加一行表单表格&#xff1b; 点击当前行删除按钮&#xff0c;…

linux鲁班猫屏幕和触摸[初用鲁班猫切换屏幕为MIPI-1080P][旋转屏幕为横屏显示][屏幕和触摸方向永久修改]

初用鲁班猫切换屏幕为MIPI-1080P 鲁班猫信息: 板卡从如下地址采购:https://detail.tmall.com/item.htm?_u110jcean66aa&id694560455663&spma1z09.2.0.0.56f52e8dj4eUdI&skuId5156903694777 鲁班猫官方文档和教程:https://doc.embedfire.com/linux/rk356x/quick_s…

【计算机视觉】BLIP:统一理解和生成的自举多模态模型

文章目录 一、导读二、背景和动机三、方法3.1 模型架构3.2 预训练目标3.3 BLIP 高效率利用噪声网络数据的方法&#xff1a;CapFilt 四、实验4.1 实验结果4.2 各个下游任务 BLIP 与其他 VLP 模型的对比 一、导读 BLIP 是一种多模态 Transformer 模型&#xff0c;主要针对以往的…

2023华数杯数学建模A题思路分析 - 隔热材料的结构优化控制研究

# 1 赛题 A 题 隔热材料的结构优化控制研究 新型隔热材料 A 具有优良的隔热特性&#xff0c;在航天、军工、石化、建筑、交通等 高科技领域中有着广泛的应用。 目前&#xff0c;由单根隔热材料 A 纤维编织成的织物&#xff0c;其热导率可以直接测出&#xff1b;但是 单根隔热…

【前端】鼠标事件计算与圆心形成的角度

在业务需求中&#xff0c;常常出现一些我们无法完成的效果图&#xff0c;这时需要UI切图给我们&#xff0c;而切图后不可避免的一些点击事件无法方便的监听 如该图圆环&#xff0c;其实是一张单独的图片&#xff0c;这种情况下只能通过js判断用户点击、拖动的鼠标位置&#xf…

【flink】开启savepoint

先启动一个任务 flink run -c com.yang.flink.CDCJob test-cdc.jar开启savepoint 命令&#xff1a; flink savepoint JobID 文件地址 flink savepoint e929a11d79bdc5e6f140f2cfb92e1335 file:///workspace/flinkSavepoints/backend这样就开启好了 操作中的错误 详细信…

xml的注释删要干净Parameter index out of range (2 > number of parameters, which is 1).

报了这个bugjava.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1). 对应sql语句是这样的 把注释删掉&#xff0c;就不报错了&#xff0c;这是什么奇葩bug

SolidWorks 3D Interconnect介绍

目前市面上有的三维设计软件有很多&#xff0c;如UG、Pro/E、CATIA等&#xff0c;而且每个三维设计软件都会生成自己文件格式。由于产品设计的原因&#xff0c;我们避免不了的会需要去使用不同三维设计软件的文件&#xff0c;这对于工程师来说其实是一件比较麻烦的事。 为什么…

简单上手FineBI

简介 安装下载 下载的是V6.0.11版本 设置管理员账号 账号admin 密码123456 新建分析主题 添加数据 选择本地数据上传 选择示例数据上传 打开效果如下&#xff0c;点击“确定”&#xff0c;这样就将示例数据上传到分析主题中 分析数据——编辑数据 如果数据质量好&#xf…

深入理解 Java Bean 的生命周期及各个阶段解析

目录 引言&#xff1a;一、什么是Java Bean二、Bean的生命周期概述三、Bean的创建阶段四、属性设置阶段初始化阶段六、使用阶段七、销毁阶段 引言&#xff1a; Java Bean是Java编程中经常使用的重要概念&#xff0c;它是可重用、可移植、可序列化的组件。在Java开发中&#xf…

数据可视化:Matplotlib详解及实战

1 Matplotlib介绍 Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表。 Matplotlib提供了一个套面向绘图对象编程的API接口&#xff0c;能够很轻松地实现各种图像的绘制&#xff0c;并且它可以配合Python GUI工具&#xff08;…

k8s手动发布镜像的方法

kubectl edit deploy编辑对应的文件&#xff0c;并:wq!保存即可

微信小程序 - scroll-view组件之上拉加载下拉刷新(解决上拉加载不触发)

前言 最近在做微信小程序项目中&#xff0c;有一个功能就是做一个商品列表分页限流然后实现上拉加载下拉刷新功能&#xff0c;遇到了一个使用scroll-viwe组件下拉刷新事件始终不触发问题&#xff0c;网上很多说给scroll-view设置一个高度啥的就可以解决&#xff0c;有些人设置了…

MySQL 窗口函数

聚合函数作为窗口函数 设聚合函数为op语法结构&#xff1a; op(字段名A) over(partition by 字段名B order by 字段名C rows between D1 and D2) 其中&#xff1a; partition by&#xff1a;按照某一字段将数据进行分组 order by&#xff1a;按照某一字段将数据进行排序&…

获取k8s scale资源对象的命令

kubectl get --raw /apis/<apiGroup>/<apiVersion>/namespaces/<namespaceName>/<resourceKind>/<resourceName>/scale 说明&#xff1a;scale资源对象用来水平扩展k8s资源对象的副本数&#xff0c;它是作为一种k8s资源对象的子资源存在&#xf…

“单片机定时器:灵活计时与创新功能的关键“

学会定时器的使用对单片机来说非常重要&#xff0c;因为它可以帮助实现各种时序电路。时序电路在工业和家用电器的控制中有广泛的应用。 举个例子&#xff0c;我们可以利用单片机实现一个具有按钮控制的楼道灯开关。当按钮按下一次后&#xff0c;灯会亮起并持续3分钟&#xff…

Windows安装子系统Linux

Windows安装子系统(Linux ubuntu&#xff09; 安装条件步骤1.安装WSL命令2.设置Linux用户名和密码3.写个简单的.c程序看看4.如何互传文件 安装条件 Windows 10版本2004及更高的版本才能安装。 步骤 1.安装WSL命令 我们可以使用WSL来安装子系统 Linux ubuntu(默认是这个)。 …

医学影像PACS:大容量图像存储 报告单多种模式及自定义样式

PACS&#xff08;picture archiving and communication system&#xff09;意为影像归档和通信系统。它是应用在医院影像科室的系统&#xff0c;主要的任务就是把日常产生的各种医学影像&#xff08;包括核磁&#xff0c;CT&#xff0c;超声&#xff0c;各种X光机&#xff0c;各…