当前位置: 首页 > news >正文

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

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

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(防止抄袭,原文地址不可删除)

相关文章:

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

JAVA &#xff5c;日常开发中连接Sqlite数据库详解 前言一、SQLite 数据库概述1.1 定义与特点1.2 适用场景 二、Java 连接 SQLite 数据库的准备工作2.1 添加 SQLite JDBC 驱动依赖2.2 了解 JDBC 基础概念 三、建立数据库连接3.1 代码示例3.2 步骤解析 四、执行 SQL 语句4.1 创建…...

Java项目实战II基于微信小程序的消防隐患在线举报系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市化进程的加快&…...

python编程Day12-属性和方法的分类

私有和公有 在python中 定义类的时候&#xff0c;可以给 属性和方法设置 访问权限&#xff0c;即规定在什么地方可以使用。 权限一般分为两种&#xff1a;公有权限、私有权限 公有权限 定义&#xff1a;直接定义的属性和方法就是公有的特点&#xff1a; 可以在任何地方访问和使…...

【unity小技巧】在 Unity 中,Application获取各种文件路径或访问不同类型的存储路径

文章目录 前言1. **Application.persistentDataPath**2. **Application.dataPath**3. **Application.streamingAssetsPath**4. **Application.temporaryCachePath**5. **Application.consoleLogPath**6. **Application.userDataPath**7. **Application.streamingAssetsPath 与 …...

c++:timer

1.设置休眠时间sleep_for 添加头文件 #include <thread> #include <iostream> #include <chrono> #include <thread>int main(int argc, char const *argv[]) {// 休眠2秒std::this_thread::sleep_for(std::chrono::seconds(2));// 休眠500毫秒std:…...

VSCode(四)CMake调试

1. 工具准备 1.1 C环境插件 1.2 CMake插件 2. Cmake工程 2.1 创建项目文件夹 ex:CMAKE_TEST 2.2 创建CMake工程 &#xff08;shift ctl P), 选择"CMAKE: Quick Start": 2.3 填写project name: (ex: test_cmake) 2.4 选择”Executable“ 项目文件内会自动…...

安装Docker并使用WSL

引言 Windows Subsystem for Linux (WSL) 是一个在Windows上运行Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。它允许开发者直接在Windows上运行Linux环境&#xff0c;而无需使用虚拟机。Docker是一个开源的应用容器引擎&#xff0c;它允许开发者打包应用以…...

HCIA-openGauss_2_2连接与认证

设置客户端认证策略 设置配置文件参数 gssql客户端连接-确定连接信息 客户端工具通过数据库主节点连接数据库&#xff0c;因此连接前&#xff0c;需要获取数据库主节点的在服务器的IP地址及数据库主节点的端口号信息。 步骤1&#xff1a;以操作系统用户omm登录数据库主节点。…...

安装 pytorch lighting

1 搜寻配对版本 进入lighting官网&#xff0c;查看配对版本 比如我就选择Python3.11、torch2.4、lightning2.4.0 2 搜寻pytorch安装命令 进入pytorch官网&#xff0c;查看以前版本的下载命令 注意要选择是 gpu版本的pytorch查看自己显卡驱动命令&#xff1a;nvidia-smi查看…...

2024年12月7日历史上的今天大事件早读

1732年12月07日英国皇家大剧院在伦敦开幕 1798年12月07日清代诗人袁枚逝世 1889年12月07日第一个充气轮胎受专利保护 1916年12月07日劳合-乔治出任英国首相 1926年12月07日第一台电冰箱受美国专利保护 1937年12月07日南京保卫战正式打响 1941年12月07日日本偷袭珍珠港 1…...

ORB-SLAM2 ---- 非线性优化在SLAM中的应用(一)

文章目录 一、为什么要讲非线性优化二、运动模型和观测模型三、最大似然估计四、SLAM中最小二乘的应用五、总结 一、为什么要讲非线性优化 相信大家在学习一段时间SLAM后&#xff0c;会发现两个问题。第一个是代码能看懂&#xff0c;但是不知道为什么这样做&#xff08;特别是优…...

FastAPI中创建一个多App架构

1. 创建项目结构 首先&#xff0c;设计一个合理的项目结构。这里以三个Apps为例&#xff1a;users、items 和 orders。2. 项目结构 my_fastapi_project/ ├── main.py ├── app/ │ ├── __init__.py │ ├── users/ │ │ ├── __init__.py │ │ ├─…...

计算机网络原理之HTTP与HTTPS

一、前言 为了理解HTTP&#xff0c;我们有必要事先了解一下TCP/IP协议簇。 通常我们使用的网络&#xff08;包括互联网&#xff09;是在TCP/IP协议簇的基础上运作的。而HTTP属于它内部的一个子集。 计算机与网络设备要相互通信&#xff0c;双方必须基于相同的方法。比如&#…...

完全按照手册win10里装Ubuntu 虚拟机然后编译ESP32(主要是想针对ESP32C3和S3)开发板的鸿蒙系统(失败)

基本上完全按照手册来的&#xff0c;除了Ubuntu虚拟机使用了22.04 Jammy版本&#xff0c;鸿蒙手册里是20.04 版本&#xff0c;主要是鸿蒙里3年前的手册了&#xff0c;所以就擅自用了高版本。 据此还想到一点&#xff0c;鸿蒙LiteOS&#xff0c;还挺稳定的&#xff0c;3年也没有…...

vsphere vcenter web 界面的介绍

这是主页的页面...

【pyspark学习从入门到精通23】机器学习库_6

目录 分割连续变量 标准化连续变量 分类 分割连续变量 我们经常处理高度非线性的连续特征&#xff0c;而且只用一个系数很难拟合到我们的模型中。 在这种情况下&#xff0c;可能很难只通过一个系数来解释这样一个特征与目标之间的关系。有时&#xff0c;将值划分到离散的桶中…...

FPGA实战篇(呼吸灯实验)

1.呼吸灯简介 呼吸灯采用 PWM 的方式&#xff0c;在固定的频率下&#xff0c;通过调整占空比的方式来控制 LED 灯亮度的变化。 PWM&#xff08;Pulse Width Modulation &#xff09;&#xff0c;即脉冲宽度调制&#xff0c;它利用微处理器输出的 PWM 信号&#xff0c;实现对…...

面经自测——自我介绍

前言 这是作者新开的坑&#xff0c;一切题目都是从网上找的原题&#xff0c;为了总结网上有关的面经&#xff0c;以便在真实面试中较为流利的回答面试官的问题 面试之——自我介绍 自我介绍是面试中最常见的问题之一&#xff0c;主要目的是让面试官了解你的背景、技能和职业…...

在 LS-DYNA 中将应力转换为用户定义的坐标系

介绍 通常&#xff0c;使用 LS-DYNA 或 Ansys Mechanical 等仿真工具解决工程问题需要将张量结果与解析解进行比较。一个这样的例子是加压圆柱体&#xff0c;其中圆周应力或环状应力是感兴趣的主要应力度量。例如&#xff0c;如果对具有复杂端部处理的几何结构进行此类仿真&am…...

【Spark】 groupByKey与reduceByKey的区别

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

数据库与数据库管理系统概述

title: 数据库与数据库管理系统概述 date: 2024/12/7 updated: 2024/12/7 author: cmdragon excerpt: 在信息化迅速发展的时代,数据已成为企业和组织的重要资产。数据库与数据库管理系统(DBMS)是高效存储、管理和利用数据的核心工具。本文首先定义了数据库的基本概念和特…...

(简单5步实现,免费且比GPT4.0更好用)部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型

摘要&#xff1a; 本文将指导您如何部署一个本地AI大语言模型聊天系统&#xff0c;使用Chatbox AI客户端应用和grok-beta大模型&#xff0c;以实现高效、智能的聊天体验。 引言&#xff1a; 由马斯克X-AI发布的Grok 2大模型以其卓越的性能超越了GPT4.0。Grok模型支持超长文本…...

滚珠螺杆导程的定义与重要性

滚珠螺杆导程是指螺杆每旋转一圈时&#xff0c;螺母&#xff08;或与之配合的移动部件&#xff09;沿螺杆轴线方向移动的距离。这个参数在机械设计和制造中非常重要&#xff0c;因为它直接影响到传动系统的速度、精度和效率。 导程是滚珠螺杆的重要参数之一&#xff0c;它与切削…...

【特殊子序列 DP】力扣509. 斐波那契数

斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n > 1 给定 n &…...

linux 架构详解

Linux 是一种开源的操作系统内核&#xff0c;最初由 Linus Torvalds 于 1991 年创建。它是一个基于 Unix 的操作系统内核&#xff0c;用于构建完整的操作系统。Linux 架构是指 Linux 操作系统的内部结构和组成组件的工作方式。 整体架构 Linux系统通常被看作是一个层次化的结…...

Spring Data Elasticsearch

简介说明 spring-data-elasticsearch是比较好用的一个elasticsearch客户端&#xff0c;本文介绍如何使用它来操作ES。本文使用spring-boot-starter-data-elasticsearch&#xff0c;它内部会引入spring-data-elasticsearch。 Spring Data ElasticSearch有下边这几种方法操作El…...

OpenGL编译用户着色器shader

shader相信很多朋友们都听说过&#xff0c;shader就是运行再GPU上的程序。虽然是这么说&#xff0c;但是我们发现&#xff0c;很多IDE开发工具比如说visual studio 没有办法直接去运行shader代码。这是因为&#xff0c;许多编译器不会自动将shader文件编译成可执行的代码然后发…...

过期策略、内存淘汰机制

1.过期策略&#xff1a;请求时删除 定期删除 请求时删除&#xff1a;使用key之前&#xff0c;检查是否过期&#xff0c;属于一种被动的处理方式。 因此&#xff0c;过期时间到了不表示这个key真的被删除了 定期删除&#xff1a;Redis默认每隔100ms检查&#xff0c;有过期ke…...

Scala的正则表达式

package hfdobject Test35_3 {def main(args: Array[String]): Unit {println("a\tb")//定义一个规则 正则表达式//1. .表示除了换行之外的其他的任意单个字符//2. \d等于[0-9] 匹配一个数字//3. \D除了\d之外的其他的任意字符&#xff0c;表示非数字//4. \w等价于[…...

关于睡懒觉

我们经常听到一个词&#xff1a;睡懒觉。 我认为&#xff0c;睡懒觉这个词&#xff0c;是错误的。 人&#xff0c;是需要睡眠的&#xff0c;睡不够&#xff0c;就不会醒。睡够了&#xff0c;自然会醒&#xff0c;也不想继续睡。不信你试试&#xff0c;睡够了&#xff0c;你…...