SQLite3 + Spring boot 使用快速入门

目录

SQLite 数据库概述

SQLite 数据库常见语法

客户端工具

sqlite-tools

SQLiteStudio

DBeaver 通用数据库工具

SQLite + JDBC 快速使用

SQLite + Spring Boot + JdbcTemplate 


SQLite 数据库概述

1、SQLite 是一个 C 语言库,它实现了一个小型快速独立高可靠性功能齐全、开源的关系型嵌入式 SQL 数据库引擎。SQLite 是世界上使用最广泛的数据库引擎。SQLite 内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。

2、SQLite 文件格式是稳定的、跨平台的和向后兼容的,开发人员承诺在 2050 年之前保持这种状态。SQLite 数据库文件通常用作容器,在系统之间传输丰富的内容,并用作数据的长期存档格式 。有超过 1 万亿 个 SQLite 数据库正在积极使用。

3、SQLite 是一个嵌入式 SQL 数据库引擎。与大多数其他 SQL 数据库不同,SQLite 没有单独的服务器进程。SQLite 直接读取和写入普通磁盘文件。具有多个表、索引、触发器和视图的完整 SQL 数据库包含在单个磁盘文件中。

4、SQLite 遵循 SQL 标准的大部分基本语法和功能,如数据定义语言(DDL)、数据操纵语言(DML)、数据查询语言(DQL)等,所以大多数场景下使用跟其他数据库语法基本一致,比如 Mysql。

5、某些极端情况下可能会导致 DB 文件损坏,比如断电、文件系统异常、硬件问题等,解决办法是:定期备份 -> 备份恢复。

官网:SQLite Home Page

开源地址:https://github.com/sqlite/sqlite

优势 & 特性

  • 轻量级:SQLite 不需要单独的服务器进程或系统资源,数据库存储在一个单一的磁盘文件中,这使得它非常适合于小型应用和移动设备。

  • 无需配置:SQLite 不需要复杂的安装和配置过程,可以很容易地集成到各种应用程序中。比如 Java 只需要在 pom.xml 引入依赖即可使用。

  • 嵌入式:SQLite 是一个嵌入式的库,不作为一个独立的服务运行,而是直接嵌入到应用程序中。

  • 事务性:支持 ACID 事务,确保数据的一致性和完整性。

  • 零配置:无需运行数据库服务器或进行复杂的配置,SQLite 数据库文件可以被多个进程共享访问。

  • 适合嵌入式系统:由于其轻量级和简单性,SQLite 经常用于嵌入式系统和移动应用。

应用场景

  • 移动应用:移动应用通常需要一个轻量级的数据库来存储本地数据,SQLite 因其小体积和无需服务器的特性非常适合

  • 桌面应用:需要本地数据库存储的桌面应用

  • 嵌入式系统:嵌入式系统和物联网设备

  • 独立应用:不需要网络数据库连接的独立应用

  • 轻量级 Web 应用:不需要复杂事务处理或高并发访问的应用

  • 边缘计算:边缘设备上运行 SQLite,仅将重要更改同步到云端,可以有效降低网络带宽的使用,并提高数据处理的实时性

不适合场景

  • 高并发应用:SQLite 不适合需要高并发写入操作的应用场景

  • 分布式系统:SQLite 是一个文件基的数据库,不适合分布式系统或需要跨多个服务器共享数据库的场景

  • 复杂的事务处理:SQLite 处理复杂的事务业务相对其他数据库较弱

  • 需要数据库高级功能:如存储过程等,不支持

  • 多用户实时协作:类似并发操作

SQLite 数据库常见语法

src/main/resources/static/sql/SQLite.sql · 汪少棠/sqliteapp3 - Gitee.com

客户端工具

1、Navicat Premium 默认支持对 SQLite 的连接,因为 SQLite 不需要安装,一个文件就是一个数据库,所以操作非常简单,存在 .db 文件时直接连接即可,不存在时,直接手动或者自动创建文件

2、Win 10 安装 Navicat 11、16 客户端

sqlite-tools

1、官网下载地址:SQLite Download Page

2、这是官网用于管理 SQLite 数据库文件的一组命令行工具, 包括 (1) sqlite3.exe 命令行 shell,(2) sqldiff.exe, (3) sqlite3_analyzer.exe,以及 (4) sqlite3_rsync.exe 64 位。

3、下载 sqlite-tools-win-x64-3480000.zip,然后解压如下。

4、为方便后续使用这个工具,可以将此目录配置到系统环境变量 path 中。如下所示。

 5、这样可以在任意目录下使用这些工具,使用非常简单,进入之后,可以使用 .help 查看相关命令,.quit 是退出。

E:\IDEA_Projects\sqliteapp3\data>sqlite3
SQLite version 3.48.0 2025-01-14 11:05:00
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

6、使用 sqlite3 工具连接数据库文件后即可操作。

E:\IDEA_Projects\sqliteapp3\data>sqlite3 test.db
SQLite version 3.48.0 2025-01-14 11:05:00
Enter ".help" for usage hints.
sqlite> select * from users;
1|张三|30|5600.45|1737198128677|1737198128677
2|Joni|42|7600.45|1837398128677|1837398128677
sqlite> .quit

E:\IDEA_Projects\sqliteapp3\data>

SQLiteStudio

1、SQLiteStudio 是一款专门用于管理和操作 SQLite 数据库的免费工具。它提供直观的图形化界面,简化了数据库的创建、编辑、查询和维护,适合数据库开发者和数据分析师使用。

 2、SQLiteStudio 提供的主要功能包括:

  • 免费开源,可以用于任何目的,包括商业使用。
  • 跨平台支持,包括 Windows、Linux 以及 MacOS X 系统。
  • SQL 高级编辑,支持语法高亮、自动补全、历史记录等。
  • 跨数据库支持,可以在单个查询中访问多个数据库中的表,通过拖拽方式跨数据库复制表。
  • 数据导入导出,支持 CSV、JSON、Excel、SQL 脚本等多种格式。
  • 管理加密数据库,包括 SQLCipher、WxSQLite3 以及 System.Data.SQLite。
  • 插件扩展,提供插件机制扩展 SQLite 功能,例如 JavaScript、Python 以及 Tcl 脚本创建自定义函数。
  • 数据生成,支持各种方式自动填充数据,方便测试。

官方网址:https://sqlitestudio.pl/

下载地址:https://github.com/pawelsalawa/sqlitestudio/releases。有安装版本,也有解压版本,这里我选择的是解压版。

3、安装或者解压后双击 SQLiteStudio.exe 运行工具,第一次会提示选择语言,选择简体中文即可。添加数据库,一个文件就是一个数据库,可以直接创建数据库,也可以连接已存在的数据库文件。

4、扩展插件的管理可以通过“工具”->“打开配置对话框”菜单打开。【外观】那里可以设置语言。

DBeaver 通用数据库工具

1、DBeaver社区是一个免费的跨平台通用数据库工具,适用于开发人员、数据库管理员、分析师和所有处理数据的人。它支持所有流行的SQL数据库,如MySQL、MariaDB、PostgreSQL、SQLite、Apache Family等。

2、https://wangmaoxiong.blog.youkuaiyun.com/article/details/82659949。 

SQLite + JDBC 快速使用

1、因为 SQLite 是嵌入式的,所以和H2数据库一样,都不需要单独安装数据库,而只需要在程序中引入它们的依赖,即可使用。SQLite 的每一个 .db 文件就是一个单独的数据库,可以随意复制粘贴使用。

引入依赖:

        <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.48.0.0</version>
        </dependency>

pom.xml · 汪少棠/sqliteapp3 - Gitee.com。 

操作数据库:

    /**
     * 原生JDBC-创建表
     * http://localhost:8080/sqlite/createTable
     */
    @GetMapping("sqlite/createTable")
    public ResultData<Object> createTable() {
        String url = "jdbc:sqlite:" + db0Path;
        try (Connection connection = DriverManager.getConnection(url);
             Statement statement = connection.createStatement()) {
            String sql = "CREATE TABLE IF NOT EXISTS users (" +
                    "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    "name TEXT NOT NULL, " +
                    "age INTEGER NOT NULL, " +
                    "annual_salary float(18,2) NOT NULL, " +
                    "create_time INTEGER NOT NULL, " + // 时间类型直接使用数字或者字符串存储
                    "update_time INTEGER NOT NULL" +
                    ")";
            statement.execute(sql);
            return ResultData.success("建表成功:" + sql);
        } catch (Exception e) {
            log.error(ExceptionUtils.getStackTrace(e));
            return ResultData.error(ResultCode.FAIL, e);
        }
    }

src/main/java/com/wmx/sqliteapp3/sqlite/SqliteController.java · 汪少棠/sqliteapp3 - Gitee.com

SQLite + Spring Boot + JdbcTemplate 

1、Spring boot 操作数据库的方式有很多种,比如 JdbcTemplate、Spring Data JPA、Mybatis 等等。无论什么方式,其实都只要在其它数据库的基础上,换一下 pom.xml 里面的依赖,然后修改一下 yml 里面的数据库地址就行。

2、这里以 JdbcTemplate + 默认数据源 HikariDataSource 为例,进行演示。引入依赖。pom.xml · 汪少棠/sqliteapp3 - Gitee.com

        <!-- 引入Spring封装的jdbc,内部默认依赖了 HikariDataSource  数据源-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-jdbc</artifactId>
         </dependency>
        <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.48.0.0</version>
        </dependency>

3、配置数据库地址与数据源:src/main/resources/application.yml · 汪少棠/sqliteapp3 - Gitee.com

spring:
  datasource:
    # jdbc 连接基础配置
    # 指定数据库文件地址,一个文件相当于一个数据库,目录必须存在,文件不存在时会自动新建;SQLite不需要配置账号与密码;
    url: jdbc:sqlite:E:\sql\sqlite3\test2.db
    #url: jdbc:sqlite:${user.home}\test_pm.db # ${user.home} 表示用户的根目录,如 C:\Users\用户名
    driver-class-name: org.sqlite.JDBC

4、数据源测试:src/test/java/com/wmx/sqliteapp3/DataSourceTest.java · 汪少棠/sqliteapp3 - Gitee.com

5、JdbcTemplate 进行CRUD

    /**
     * JdbcTemplate 是 core 包的核心类,用于简化 JDBC 操作,还能避免一些常见的错误,如忘记关闭数据库连接
     * Spring Boot 默认提供了数据源,默认提供了 org.springframework.jdbc.core.JdbcTemplate
     * JdbcTemplate 中会自己注入数据源,使用起来也不用再自己来关闭数据库连接
     */
    @Resource
    private JdbcTemplate jdbcTemplate;

    /**
     * 新增 iphone 数据
     * http://localhost:8080/savePhone
     *
     * @return
     */
    @GetMapping("savePhone")
    public ResultData<Object> savePhone() {
        String sql = "INSERT INTO iphone(id,name,price,publish_time) VALUES (?,?,?,?)";
        Object[] objects = new Object[4];
        objects[0] = null;
        objects[1] = "大米S" + String.valueOf(System.currentTimeMillis()).substring(10, 12);
        objects[2] = 800 + new SecureRandom().nextFloat() * 5000;
        objects[3] = DateUtil.date().getTime();
        int update = jdbcTemplate.update(sql, objects);
        return ResultData.success(update);
    }

src/main/java/com/wmx/sqliteapp3/sqlite/PhoneController.java · 汪少棠/sqliteapp3 - Gitee.com

### 回答1: CentOS 7上启动httpd服务失败可能有多种原因,以下是一些常见的解决方法: 1. 检查httpd配置文件是否正确:可以使用命令`httpd -t`检查httpd配置文件是否正确,如果有错误,需要修改配置文件。 2. 检查端口是否被占用:可以使用命令`netstat -tlnp`查看端口是否被占用,如果被占用需要释放端口或修改httpd配置文件中的端口号。 3. 检查httpd服务是否安装:可以使用命令`rpm -qa | grep httpd`查看httpd服务是否安装,如果没有安装需要先安装httpd服务。 4. 检查httpd服务是否启动:可以使用命令`systemctl status httpd`查看httpd服务是否启动,如果没有启动需要使用命令`systemctl start httpd`启动httpd服务。 5. 检查SELinux是否开启:如果SELinux开启,可能会导致httpd服务启动失败,需要使用命令`setenforce 0`关闭SELinux,或者修改SELinux策略。 以上是一些常见的解决方法,如果以上方法都无法解决问题,可以查看httpd服务日志文件,找到具体的错误信息,然后根据错误信息进行解决。 ### 回答2: CentOS 7上的httpd服务启动失败可能有多种原因。以下列出了一些常见问题和解决方法: 1. 端口被占用 当httpd试图占用已被其他程序占用的端口时会启动失败。此时可以通过使用`netstat -tunlp`命令检查端口占用情况,然后杀死占用该端口的进程及时释放端口。或者修改httpd的配置文件,将端口修改为未被占用的端口。 2. 配置文件错误 有时httpd服务的配置文件中可能出现错误,例如语法错误或路径错误等等。在启动httpd服务之前,可以使用`apachectl configtest`命令进行检查,如果输出“Syntax OK”,则表示配置文件没有错误。如果出现错误,则需要根据错误提示进行相应修改。 3. 依赖关系问题 如果httpd依赖的其他程序或库缺失,也会导致启动失败。可以通过使用`systemctl status httpd.service`命令来查看httpd服务状态,如果输出“Failed to start”或“Loaded: failed”,则需要检查依赖关系是否完整。 4. SELinux问题 当SELinux启用时,有时会导致httpd服务启动失败。在这种情况下,可以在SELinux上禁用httpd服务,或者修改httpd配置文件解决SELinux相关的问题。 5. 用户权限问题 httpd服务的启动可能需要特定的用户权限。如果使用的用户权限不够,则无法启动。可以尝试使用root用户启动httpd服务,或者根据需要修改相应的用户权限。 ### 回答3: CentOS 7中的Apache HTTP服务器(httpd)是一个常见的Web服务器,如果遇到httpd服务启动失败的情况,可能会影响服务器正常的工作和对外服务的稳定性。本文将提供一些可能会导致httpd服务启动失败的原因,并给出相应的解决方法。 1. 端口被占用 如果端口被其他进程占用,httpd服务就无法启动。可以通过 netstat -tulpn 命令查看端口占用情况,并杀死占用该端口的进程。如果端口被 httpd 服务自身占用,可以通过 systemctl restart httpd 命令重启 httpd 服务;如果是其他进程占用了端口,可以通过 kill 命令杀死该进程或更改 httpd.conf 文件配置,将 httpd 服务的端口改为其他空闲端口,重新启动。 2. 配置文件错误 httpd 服务的配置文件通常是 /etc/httpd/conf/httpd.conf,如果其中存在语法错误、权限问题或者其它配置错误,可能会导致 httpd 服务启动出错。可以通过将 httpd.conf 文件备份后删掉,重新执行 yum install httpd 命令安装 httpd 服务,然后手动修改 httpd.conf 文件,逐个检查每个配置项是否正确,确认无误后重启 httpd 服务。 3. SELinux 问题 SELinux 是 CentOS 7中提供的一种安全模块,它可以对系统文件和应用程序进行安全管控。如果 SELinux 配置不正确,可能会阻止 httpd 服务正常启动。可以通过修改 /etc/selinux/config 文件中 SELINUX=disabled 来暂时关闭 SELinux,然后重新启动 httpd 服务;或者一个更优的方式是,根据日志确定问题原因,使用命令 semanage 或者 setsebool 等工具将相关目录或者配置加入到 SELinux 许可列表中,重新启动 httpd 服务,以恢复服务正常工作。 4. 防火墙问题 如果你的 CentOs 7 服务器启用了防火墙,有可能会导致 httpd 服务启动失败。可以通过检查防火墙相关配置来确定问题原因,解决方案是修改防火墙规则,将端口 80 或者 443 等 httpd 服务需要的端口放行,重新启动 httpd 服务。 总之,当遇到 httpd 服务启动失败时,不要慌张,可以先通过日志或者执行命令查看错误信息,找到错误原因,然后根据错误原因一步一步解决问题。在解决问题过程中注意备份原始配置文件,以免造成不必要的损失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚩尤后裔-汪茂雄

芝兰生于深林,不以无人而不芳。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值