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对象会自动关闭,即使在操作过程中出现异常。

结束语

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

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

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


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


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


优质源码分享



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

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

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

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


① 🉑提供云服务部署(有自己的阿里云);

② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;

如🈶合作请联系我,期待您的联系。

:本文撰写于CSDN平台 ,作者:xcLeigh所有权归作者所有)https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


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


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

相关推荐
only-qi1 小时前
146. LRU 缓存
java·算法·缓存
阿里小阿希1 小时前
Vue3 + Element Plus 项目中日期时间处理的最佳实践与数据库设计规范
数据库·设计规范
xuxie132 小时前
SpringBoot文件下载(多文件以zip形式,单文件格式不变)
java·spring boot·后端
白鹭2 小时前
MySQL源码部署(rhel7)
数据库·mysql
重生成为编程大王2 小时前
Java中的多态有什么用?
java·后端
666和7772 小时前
Struts2 工作总结
java·数据库
还听珊瑚海吗2 小时前
SpringMVC(一)
数据库
中草药z2 小时前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流
野犬寒鸦3 小时前
力扣hot100:搜索二维矩阵 II(常见误区与高效解法详解)(240)
java·数据结构·算法·leetcode·面试
zru_96023 小时前
centos 系统如何安装open jdk 8
java·linux·centos