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