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

news2024/10/8 17:48:24

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍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

在这里插入图片描述

以上。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Autolayout自动布局介绍 Objective-C语言】

一、好,我们开始介绍Autolayout 1.什么事Autolayout 好,那么,接下来,我们介绍一下这个Autolayout Autolayout,就是“自动布局” 那么,自动布局,它就是专门用来做UI界面的 那么,UI界面,我们为了适应不同屏幕,要进行自动布局, 所以要使用Autolayout 这个Autolayou…

物理机是什么?有什么优势?可以上堡垒机吗?

你知道物理机是什么&#xff1f;有什么优势&#xff1f;可以上堡垒机吗&#xff1f;今天我们就来简单聊聊。 物理机是什么&#xff1f; 物理机是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境&#xff0c;有时也称为“寄主”或“宿主”。 物理机有什么…

C# Blazor 学习笔记(11):路由跳转和信息传值

文章目录 前言路由跳转测试用例路由传参/路由约束 前言 Blazor对路由跳转进行了封装。 ASP.NET Core Blazor 路由和导航 NavigationManager 类 本文的主要内容就是全局的跳转 路由跳转 路由跳转就要用到NavigationManager 类。 其实最常用的还是NavigateTo这个跳转函数 测…

AVI怎么转换成MP4格式?教你几种方法轻松转换

MP4格式具有广泛的兼容性&#xff0c;可以在大多数设备和平台上播放。无论是电脑、手机、平板还是电视&#xff0c;都可以播放MP4格式的视频&#xff0c;而且在不同的操作系统和浏览器上也能够正常播放。AVI格式的视频就不一定能这样&#xff0c;因此将AVI转成MP4格式会方便很多…

HCIP静态路由实验

实验要求为&#xff1a; 1、R6为isp&#xff0c;接口IP地址均为公有地址&#xff1b;该设备只能配置IP地址&#xff0c;之后不能进行任何配置&#xff1b; 2、R1-R5为局域网&#xff0c;私有IP地址192.168.1.0/24&#xff0c;请合理分配&#xff1b; 3、所有路由器上环回&…

RF手机天线仿真介绍(二):孔径调谐和阻抗调谐

目录 简介孔径调谐阻抗调谐孔径调谐组件选择分析 简介 由于手机运行所需的频段、功能和模式的数量不断增加&#xff0c;现代手机的 RF 前端 (RFFE) 设计也日益复杂。需要采用更多天线&#xff0c;使用载波聚合 (CA)、4x4 MIMO、Wi-Fi MIMO 和新的宽带 5G 频段来提供更高的数据…

wireshark简单使用(一)

前两天为同事处理交换机故障&#xff0c;接触到wireshark使用&#xff0c;意识到这个工具对于工程师来说&#xff0c;查询报文还是必须的&#xff0c;了解基本的使用。 于是接触到一些视频&#xff0c;开始自学。 第一步 查询本机IP地址 cmd---ipconfig 查看本机IP地址和网关…

【IDEA】常用插件清单

【IDEA】常用插件清单 arthas ideaCodeium: AI Autocomplete for xxxCommit-MessageGenerateAllSetterMaven HelperMybatisPlusOne Dark themePDF ViewerRainbow BracketsRestfulToolSequenceDiagramSonarLintTranslation arthas idea 快捷生成arthas命令 Codeium: AI Autoc…

Agent:OpenAI的下一步,亚马逊云科技站在第5层

什么是Agent&#xff1f;在大模型语境下&#xff0c;可以理解成能自主理解、规划、执行复杂任务的系统。Agent也将成为新的起点&#xff0c;成为各行各业构建新一代AI应用必不可少的组成部分。 对此&#xff0c;初创公司Seednapse AI创始人提出构建AI应用的五层基石理论&#…

redis原理 8:有备无患 —— 主从同步

很多企业都没有使用到 Redis 的集群&#xff0c;但是至少都做了主从。有了主从&#xff0c;当 master 挂掉的时候&#xff0c;运维让从库过来接管&#xff0c;服务就可以继续&#xff0c;否则 master 需要经过数据恢复和重启的过程&#xff0c;这就可能会拖很长的时间&#xff…

中国农村程序员学习了【正则表达式入门】购买大平层,开上帕拉梅拉,迎娶白富美出任CEO走上人生巅峰

文章目录 正则表达式使用测试方法匹配文字字符串同时用多种模式匹配文字字符串匹配时忽略大小写提取匹配项全局匹配用通配符匹配任何内容将单个字符与多种可能性匹配匹配字母表中的字母匹配字母表中的数字和字母匹配单个未指定的字符匹配出现一次或多次的字符匹配出现零次或多次…

AQS源码分析

AbstractQueueSynchronizer简称AQS&#xff08;抽象的队列同步器&#xff09;&#xff0c;是重量级基础框架以及JUC体系的基石&#xff0c;主要用于解决锁分配给谁的问题。 AQS入门级理论知识 整体就是一个抽象的FIFO队列来完成线程获取资源排队的工作&#xff0c;并通过一个in…

UGUI图文混排超链接

目录 一、LinkSpriteText二、EmojiText1、EmojiText2、支持超链接的EmojiText出现的问题 三、通用版EmojiText1、使用方法 之前做web项目有个需求需要通过某种方式打开试题中所提到的关键字介绍,当时是在试题旁边放个小按钮点击打开,后来要求把图标放在题干中,或者直接点击关键…

小程序swiper结合swiper-item实现banner轮播

swiper 基础库 1.0.0 开始支持&#xff0c;低版本需做兼容处理。 微信 Windows 版&#xff1a;支持 微信 Mac 版&#xff1a;支持 渲染框架支持情况&#xff1a;Skyline &#xff08;使用最新 Nighly 工具调试&#xff09;、WebView 功能描述 滑块视图容器。其中只可放置swip…

ssh连接之xshell软件远程连接主机无法通过password登录

一、背景概述 使用xshell软件ssh连接远程控制系统时&#xff0c;输入用户名后&#xff0c;发现默认不可通过password登录&#xff0c;但是可通过Public Key和Keyboard Interactive方式进行连接。网上查询到解决办法&#xff0c;尝试ok之后记录一下问题解决。 二、问题解决步骤…

信号的频谱分析与信号滤波

信号的频谱分析与信号滤波 试验目的&#xff1a;熟悉信号的频谱分析与信号滤波。 信号的频谱分析 例、建立一个含50Hz和120Hz幅值为2的正弦信号&#xff08;sin&#xff09;&#xff0c;然后叠加一个幅值为1的随机信号&#xff0c;利用Matlab分析其频谱。并滤除噪声信号和12…

多平台打包快捷方式

一个项目会有好几个环境&#xff0c;不同环境用的时候总是需要改配置&#xff0c;比较麻烦&#xff0c;这次给大家讲一个简单的方法&#xff0c;关于Springboot项目在不同平台下的快捷打包方式。需要配合maven。 在pom文件中加入如下配置&#xff1a; <profiles><pr…

通俗一点讲什么是嵌入式?

嵌入式系统&#xff0c;就是&#xff0c; 在其它电子产品或设备中&#xff0c;加入(嵌入)一个小小的"计算机"。 目的是为了&#xff0c;人机交互、采集传感器数据、处理数据、控制执行机构和通信。这些是"计算机"擅长的。 这个小小的"计算机"…

STM32 低功耗-停止模式

STM32 停止模式 文章目录 STM32 停止模式第1章 低功耗模式简介第2章 停止模式简介2.1 进入停止模式2.1 退出停止模式 第3章 停止模式程序部分总结 第1章 低功耗模式简介 在 STM32 的正常工作中&#xff0c;具有四种工作模式&#xff1a;运行、睡眠、停止以及待机模式。 在系统…

C 题 母亲身心健康对婴儿成长的影响【2023 华数杯全国大学生数学建模竞赛题目】思路+完整代码

C 题 母亲身心健康对婴儿成长的影响【2023 华数杯全国大学生数学建模竞赛题目】思路完整代码 一、赛题题目&#xff1a; 许多研究表明&#xff0c;母亲的身体指标和心理指标对婴儿的行为特征和睡眠质 量有影响&#xff0c;请问是否存在这样的规律&#xff0c;根据附件中的数据…