JAVA |日常开发中连接Sqlite数据库详解

news2024/12/23 22:08:12

在这里插入图片描述
在这里插入图片描述

JAVA |日常开发中连接Sqlite数据库详解

  • 前言
  • 一、SQLite 数据库概述
    • 1.1 定义与特点
    • 1.2 适用场景
  • 二、Java 连接 SQLite 数据库的准备工作
    • 2.1 添加 SQLite JDBC 驱动依赖
    • 2.2 了解 JDBC 基础概念
  • 三、建立数据库连接
    • 3.1 代码示例
    • 3.2 步骤解析
  • 四、执行 SQL 语句
    • 4.1 创建表
    • 4.2 插入数据
    • 4.3 查询数据
  • 五、异常处理与资源管理
    • 5.1 异常处理
    • 5.2 资源管理
  • 结束语
  • 优质源码分享

JAVA |日常开发中连接Sqlite数据库详解,在日常的Java开发中,连接和操作SQLite数据库是一个常见的任务。SQLite是一个轻量级的、嵌入式的、关系型数据库管理系统,它不需要外部的数据库服务器,并且整个数据库(包括定义、表、索引和数据)都保存在一个单独的文件中。这使得SQLite非常适合用于嵌入式系统、移动设备、桌面应用程序以及作为开发过程中的临时数据存储。本文将详细介绍如何在Java中连接SQLite数据库,包括所需的库、连接步骤、执行SQL语句以及处理结果集。

前言

        在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

一、SQLite 数据库概述

1.1 定义与特点

    SQLite 是一个轻量级的嵌入式关系型数据库管理系统。它的特点是占用资源少、速度快、零配置(不需要单独的服务器进程或复杂的安装配置),并且是基于文件的数据库,整个数据库存储在一个文件中,非常适合在移动设备、桌面应用以及小型的 Web 应用等场景中使用。

1.2 适用场景

    移动应用开发:在安卓和 iOS 应用中,用于存储用户数据、应用配置等信息。例如,存储用户的偏好设置、本地缓存数据等。
    小型桌面应用:如简单的记账软件、待办事项管理工具等,这些应用的数据量不大,对数据库功能要求相对简单,SQLite 能够很好地满足需求。
    嵌入式系统:在一些资源受限的嵌入式设备中,SQLite 可以提供基本的数据存储和管理功能。

二、Java 连接 SQLite 数据库的准备工作

2.1 添加 SQLite JDBC 驱动依赖

    如果使用 Maven 构建项目,需要在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite - jdbc</artifactId>
    <version>3.36.0.3</version>
</dependency>

    这会将 SQLite 的 JDBC 驱动添加到项目中,使得 Java 程序能够通过 JDBC(Java Database Connectivity)接口与 SQLite 数据库进行通信。

2.2 了解 JDBC 基础概念

    JDBC 驱动: 是 Java 程序与数据库之间的桥梁,它实现了 JDBC 接口,负责将 Java 的数据库操作请求转换为数据库能够理解的指令,并将数据库的响应返回给 Java 程序。
    连接字符串(Connection String): 用于指定要连接的数据库的位置和其他相关参数。对于 SQLite 数据库,连接字符串通常是jdbc:sqlite:database.db的形式,其中database.db是数据库文件的名称。如果数据库文件在特定的目录下,需要提供完整的路径。

三、建立数据库连接

3.1 代码示例

    以下是一个简单的 Java 代码片段,用于建立与 SQLite 数据库的连接:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class SQLiteConnectionExample {
    public static void main(String[] args) {
        try {
            // 加载SQLite JDBC驱动
            Class.forName("org.sqlite.JDBC");
            // 建立连接,这里假设数据库文件名为test.db,位于当前目录下
            Connection connection = DriverManager.getConnection("jdbc:sqlite:test.db");
            System.out.println("成功连接到SQLite数据库");
            // 关闭连接
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

3.2 步骤解析

加载驱动: Class.forName(“org.sqlite.JDBC”)语句用于加载 SQLite 的 JDBC 驱动。在较新的 JDBC 版本中,这一步骤可能不是必需的,但为了兼容性,通常还是会包含这一步。
建立连接: 通过DriverManager.getConnection(“jdbc:sqlite:test.db”)方法建立与 SQLite 数据库的连接。如果数据库文件不存在,SQLite 会自动创建一个新的数据库文件。
关闭连接: 在完成数据库操作后,使用connection.close()关闭连接,释放资源。

四、执行 SQL 语句

4.1 创建表

    示例代码如下,用于在 SQLite 数据库中创建一个简单的users表:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateTableExample {
    public static void main(String[] args) {
        try {
            Class.forName("org.sqlite.JDBC");
            Connection connection = DriverManager.getConnection("jdbc:sqlite:test.db");
            Statement statement = connection.createStatement();
            String sql = "CREATE TABLE IF NOT EXISTS users (" +
                    "id INTEGER PRIMARY KEY AUTOINCREMENT," +
                    "name TEXT," +
                    "age INTEGER)";
            statement.executeUpdate(sql);
            System.out.println("表创建成功");
            statement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

    在这里,通过connection.createStatement()创建一个Statement对象,用于执行 SQL 语句。executeUpdate方法用于执行创建表的 SQL 语句,因为这是一个会修改数据库结构的操作(如创建、修改、删除表等)。

4.2 插入数据

    以下是向users表中插入数据的示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertDataExample {
    public static void main(String[] args) {
        try {
            Class.forName("org.sqlite.JDBC");
            Connection connection = DriverManager.getConnection("jdbc:sqlite:test.db");
            Statement statement = connection.createStatement();
            String sql = "INSERT INTO users (name, age) VALUES ('John', 30)";
            statement.executeUpdate(sql);
            System.out.println("数据插入成功");
            statement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

    同样使用executeUpdate方法执行插入数据的 SQL 语句,将一个名为John,年龄为 30 的用户信息插入到users表中。

4.3 查询数据

    示例代码用于从users表中查询数据:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class QueryDataExample {
    public static void main(String[] args) {
        try {
            Class.forName("org.sqlite.JDBC");
            Connection connection = DriverManager.getConnection("jdbc:sqlite:test.db");
            Statement statement = connection.createStatement();
            String sql = "SELECT * FROM users";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
            }
            resultSet.close();
            statement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

    这里通过executeQuery方法执行查询语句,返回一个ResultSet对象,用于存储查询结果。通过while (resultSet.next())循环遍历ResultSet,并使用getInt、getString等方法获取每一行的数据。

五、异常处理与资源管理

5.1 异常处理

    在与数据库交互的过程中,可能会出现多种异常,如SQLException(数据库操作异常)、ClassNotFoundException(找不到 JDBC 驱动类)等。在代码中,应该使用try - catch块来捕获这些异常,并进行适当的处理,例如打印错误信息或者进行一些回滚操作。

5.2 资源管理

    数据库连接、Statement对象和ResultSet对象等都是有限的资源,在使用完毕后应该及时关闭,以释放资源。可以使用try - with - resources语句(从 Java 7 开始支持)来自动关闭这些资源。例如:

try (Connection connection = DriverManager.getConnection("jdbc:sqlite:test.db");
     Statement statement = connection.createStatement();
     ResultSet resultSet = statement.executeQuery(sql)) {
    // 数据库操作代码
} catch (SQLException e) {
    e.printStackTrace();
}

    在try语句块结束后,connection、statement和resultSet对象会自动关闭,即使在操作过程中出现异常。

结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------
 

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144188937(防止抄袭,原文地址不可删除)

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

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

相关文章

对 JavaScript 说“不”

JavaScript编程语言历史悠久&#xff0c;但它是在 1995 年大约一周内创建的。 它最初被称为 LiveScript&#xff0c;但后来更名为 JavaScript&#xff0c;以赶上 Java 的潮流&#xff0c;尽管它与 Java 毫无关系。 它很快就变得非常流行&#xff0c;推动了 Web 应用程序革命&…

解谜类游戏《迷失岛2》等如何抽象出一套通用高效开发框架?

解谜类游戏以精妙的谜题设计和引人入胜的故事叙述为特点&#xff0c;考验着玩家的智慧与观察力。《迷失岛2》与《南瓜先生2九龙城寨》正是这一领域的佳作。游戏以独特的艺术风格和玩法设计吸引了大量玩家&#xff0c;而它们背后隐藏着一套强大的框架。 上海胖布丁游戏的技术总…

CID引流电商

ClickID技术是基于多家媒体平台开发的电商引流服务&#xff0c;通过媒体提供的宏参数&#xff0c;间接解决电商平台订单数据的回传问题&#xff0c;帮助账户收集到极致精准的数据模型&#xff0c;搭建不同媒体往各平台引流的桥梁。简单来说就是通过ClickID数据监测到另外一个平…

保姆级教程Docker部署Redis镜像

目录 1、创建挂载目录和配置文件 2、运行Redis镜像 3、查看redis运行状态 1、创建挂载目录和配置文件 # 创建宿主机Redis配置文件存放目录 sudo mkdir -p /data/docker/redis/conf# 创建Redis配置文件 cd /data/docker/redis/conf sudo touch redis.conf 到Github上找到Redi…

如何将快捷指令添加到启动台

如何将快捷指令添加到启动台/Finder/访达&#xff08;Mac&#xff09; 1. 打开快捷指令创建快捷指令 示例创建了一个文件操作测试的快捷指令。 2. 右键选择添加到程序坞 鼠标放在待添加的快捷指令上。 3. 右键添加到访达 鼠标放在待添加的快捷指令上。 之后就可以在启…

【AI学习】Mamba学习(二十):Mamba是一种线性注意力

论文《Demystify Mamba in Vision: A Linear Attention Perspective 》从线性注意力的视角&#xff0c;对Mamba 进行了阐释。 论文名称&#xff1a;Demystify Mamba in Vision: A Linear Attention Perspective (Arxiv 2024.05) 论文地址&#xff1a;https://arxiv.org/pdf/24…

Bootstrap-HTML(三)Bootstrap5列表组全解析

Bootstrap-HTML&#xff08;三&#xff09;Bootstrap5列表组全解析 前言&#xff08;一&#xff09;HTML 列表基础回顾1.无序列表2.有序列表3.定义列表 二、无样式的有序列表和无序列表内联列表 三、Bootstrap5 列表组1.基础的列表组2.设置禁用和活动项3.链接项的列表组4.移除列…

【CSP CCF记录】202212-2第28次认证 训练计划

题目 样例1输入 10 5 0 0 0 0 0 1 2 3 2 10 样例1输出 1 1 1 1 1 10 9 8 9 1 样例1解释 五项科目间没有依赖关系&#xff0c;都可以从第 1 天就开始训练。 10天时间恰好可以完成所有科目的训练。其中科目 1 耗时仅 1天&#xff0c;所以最晚可以拖延到第 10 天再开始训练&…

java 18 异常处理

一&#xff0c;异常概念 基本概念Java语言中&#xff0c;将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类&#xff1a; 1&#xff09;Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部…

【Spark】 groupByKey与reduceByKey的区别

groupByKey 操作&#xff1a;将相同键的所有值收集到一个集合中。实现&#xff1a;不会在map端进行局部聚合&#xff0c;而是直接将所有相同键的数据传输到reduce端进行聚合。缺点&#xff1a;由于没有本地聚合&#xff0c;groupByKey会导致大量的数据传输和shuffle&#xff0c…

房屋租赁系统源码 SpringBoot + Vue 实现全功能解析

这是一套使用 SpringBoot 与 Vue 开发的房屋租赁系统源码&#xff0c;站长分析过这套源码&#xff0c; 推测其原始版本可能是一个员工管理系统&#xff0c;经过二次开发后&#xff0c;功能被拓展和调整&#xff0c;现已完全适用于房屋租赁业务。 该系统功能完善&#xff0c;涉…

【ArcGISPro】训练自己的深度学习模型并使用

本教程主要训练的是识别汽车的对象检测模型 所使用的工具如下(导出训练数据进行深度学习、训练深度学习模型、使用深度学习检测对象) 1.准备训练数据 1.1新建面矢量,构建检测对象 右键地理数据库->新建->要素类 选择面类型 1.2点击编辑窗口进行勾画汽车检测对象…

鸿蒙特色实战3共享单车案例

1 案例截图 2 开发准备 本项目需要一台NEXT真机&#xff0c;并完成以下准备工作。 在AppGallery Connect&#xff08;简称AGC&#xff09;上&#xff0c;参考创建项目和创建应用完成HarmonyOS应用的创建&#xff0c;从而使用各类服务。 添加应用包名要注意&#xff1a;与新建…

Thonny IDE + MicroPython + ESP32 + 0.96寸OLED(IIC) 显示任意字符

四针脚0.96英寸OLED显示屏模块的具体参数如下表所示。 参数名称 参数特性 分辨率 128x64像素 通信方式 IIC 驱动芯片 SSD1306 屏幕颜色 白色、蓝色或黄蓝双色 元件&#xff1a; 四针脚0.96英寸OLED显示屏模块 ESP32 DEVKIT_C开发板 杜邦线USB Type-C 接线&#xf…

监控易助力IT运维再升级

在当今数字化时代&#xff0c;企业对于IT系统的依赖程度日益加深&#xff0c;IT运维管理的重要性也随之凸显。作为首都的一家知名企业&#xff0c;北京某公司在业务快速发展的同时&#xff0c;也面临着IT系统规模不断扩大、运维管理复杂度不断提升的挑战。为了更好地应对这些挑…

线程(二)——线程安全

如何理解线程安全&#xff1a; 多线程并发执行的时候&#xff0c;有时候会触发一些“bug”&#xff0c;虽然代码能够执行&#xff0c;线程也在工作&#xff0c;但是过程和结果都不符合我们的开发时的预期&#xff0c;所以我们将此类线程称之为“线程安全问题”。 例如&#xff…

prometheusgrafana实现监控告警

Prometheus负责集群数据的监控和采集&#xff0c;然后传递给grafana进行可视化&#xff0c;集成睿象云可实现监控报警&#xff0c;为了方便操作&#xff0c;可以通过iframe嵌套grafana到指定的页面。 文章目录 1.Grafana集成Prometheus2.iframe内嵌grafana3.监控告警 1.Grafana…

双绞线直连两台电脑的方法及遇到的问题

文章目录 前言一、步骤二、问题总结&#xff1a;问题1:遇到ping不通的问题。问题2:访问其他电脑上的共享文件时提示输入网络凭证问题3:局域网共享文件时提示“没有权限访问&#xff0c;请与网络管理员联系请求访问权限” 前言 办公室里有两台电脑&#xff0c;一台装了显卡用于…

如何使用Java编写Jmeter函数

Jmeter 自带有各种功能丰富的函数&#xff0c;可以帮助我们进行测试&#xff0c;但有时候提供的这些函数并不能满足我们的要求&#xff0c;这时候就需要我们自己来编写一个自定义的函数了。例如我们在测试时&#xff0c;有时候需要填入当前的时间&#xff0c;虽然我们可以使用p…