sqlLite 如何使用数据库连接池

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

一、前言

编写的一个jar包工具中,要使用到sqlLite数据库,由于要频繁的操作数据库、在建立连接和释放资源的时候 会很耗资源。想到用数据池可以解决这个问题,由于编写的工具,没有用到后端框架、只是一个简单的maven工程。所以在集成sqlLite数据池的时候会有所差别、这里进行简单记录

二、方法

1.1 加入pom依赖

我这里使用的是Maven工程,首先添加pom包依赖 【如果不是maven工程,需自行下载这个jar包,丢入到项目的lib目录下】 、这里使用HikariCP 数据池,有关该数据池的使用,请自行查阅资源

        <!-- sqlite的连接驱动 --><dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.25.2</version></dependency><!-- HikariCP数据库连接池 --><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>3.4.5</version></dependency>

1.2 编写方法

然后可以创建HikariDataSource对象,并将它作为数据源:

HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:sqlite:/path/to/database.db");
config.setDriverClassName("org.sqlite.JDBC");
HikariDataSource ds = new HikariDataSource(config);

1.3 实际使用案例

/*** @author zyz* @version 1.0* @data 2023/10/30 16:29* @Description: 采用数据库连接池*/
public class JdbcUtils_DBCP {private static String Drivde="org.sqlite.JDBC";private static Statement statement;private static Connection connection;private static ResultSet resultSet;/*** 4.提升作用域*/private static HikariDataSource dataSource;private static HikariConfig config;private static String dbFilePath = "jdbc:sqlite:D:\\GrgBanking\\iTerminal\\" + "Data" + File.separator + "trans.db";public JdbcUtils_DBCP(String dbFilePath) {this.dbFilePath = "jdbc:sqlite:" + dbFilePath;}/*** 1.获取数据源 dataSource*/static {try {config = new HikariConfig();config.setJdbcUrl(dbFilePath);config.setDriverClassName(Drivde);dataSource = new HikariDataSource(config);} catch (Exception e) {e.printStackTrace();throw new RuntimeException("创建连接池失败:" + e.getMessage());}}/*** 2.获取连接 (数据源dataSource自带连接)** @return* @throws SQLException* @throws SQLException*/public void connect() {GrgLoggerRepository.getMonitorCOMM().LogInfo("SqlLite connection start");try {if (null == connection) {connection = dataSource.getConnection();statement = connection.createStatement();}} catch (SQLException e) {GrgLoggerRepository.getMonitorCOMM().LogError("SqlLite connection error:", e);}GrgLoggerRepository.getMonitorCOMM().LogInfo("SqlLite connection end");}/*** @param sql sql语句* @return int* @author ZYZ* @description 插入数据库操作并返回数据ID*/public int insertGoBackIDHKCP(String sql) throws SQLException {try {connect();GrgLoggerRepository.getMonitorCOMM().LogInfo("insertGoBackID SQL:" + sql);statement.executeUpdate(sql);resultSet = statement.getGeneratedKeys();int iresult = resultSet.getInt(1);return iresult;} finally {release();}}/*** @param* @return* @author ZYZ* @description 3.释放数据库资源*/public static void release() {GrgLoggerRepository.getMonitorCOMM().LogInfo("SqlLite close start");try {if (null != resultSet) {resultSet.close();resultSet = null;}if (null != statement) {statement.close();statement = null;}if (null != connection) {connection.close();connection = null;}} catch (SQLException e) {GrgLoggerRepository.getMonitorCOMM().LogError("SqlLite close error", e);}GrgLoggerRepository.getMonitorCOMM().LogInfo("SqlLite close end");}
}

三、后语

遇到的问题

本地测试数据池可以正常创建,正常连接操作等。但是打包后,数据池创建失败。失败原因是:数据池相关jar包没有打入到项目中。

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

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

相关文章

JS(JavaScript) 实现延迟等待(sleep方法)

起因&#xff1a; 只使用 setTimeout 会产生嵌套等方面的问题&#xff0c;达不到想要的效果。 解决方法&#xff1a; 使用 async/await 还有 Promise 相结合的方式来解决问题。 直接上代码&#xff1a; function sleep(time) {return new Promise((resolve) > setTimeout…

公众号留言功能报价是多少?值得开通吗?

为什么公众号没有留言功能&#xff1f;根据要求&#xff0c;自2018年2月12日起&#xff0c;新申请的微信公众号默认无留言功能。有些人听过一个说法&#xff1a;公众号粉丝累计到一定程度或者原创文章数量累计到一定程度就可以开通留言功能。其实这个方法是2018年之前才可以&am…

三氧化二铁纳米片

&#xff08;西&#xff09;三氧化二铁纳米片 &#xff08;安&#xff09;名称&#xff1a;三氧化二铁纳米片 &#xff08;瑞&#xff09;CAS&#xff1a;1309-37-1 &#xff08;禧&#xff09;分子式&#xff1a;Fe2O3 &#xff08;生&#xff09;外观&#xff1a;白色粉末…

链表的引入

什么是链表 链表一种线性的数据结构&#xff0c;通过指针将一个个零散的内存块连接起来&#xff0c;链表的每个内存块称为结点。结构体指针在这里得到了充分的利用。 为什么要使用链表 链表可以动态的进行存储分配&#xff0c;也就是说&#xff0c;链表是一个功能极为强大的数…

518抽奖软件,是否支持作弊~内定~指定中奖人~设置范围

518抽奖软件简介 518抽奖软件&#xff0c;518我要发&#xff0c;超好用的年会抽奖软件&#xff0c;简约设计风格。 包含文字号码抽奖、照片抽奖两种模式&#xff0c;支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 主打纯净&#xff0c;不可作弊 市面上&…

7. 一文快速学懂常用工具——Makefile

本章讲解知识点 引言 Makefile Makefile 入门 本专栏适合于软件开发刚入职的学生或人士&#xff0c;有一定的编程基础&#xff0c;帮助大家快速掌握工作中必会的工具和指令。本专栏针对面试题答案进行了优化&#xff0c;尽量做到好记、言简意赅。如专栏内容有错漏&#xff0…

Flask 网站装潢, 简易更换模板

Flask 网站装潢&#xff0c;简易更换模板 本博文找个好看的网页模板&#xff0c;并简单改一改变成flask模板&#xff0c;并展示 主博客目录&#xff1a;《从零开始学习搭建量化平台笔记》 文章目录 Flask 网站装潢&#xff0c;简易更换模板下载模板Python 自动生成目录修改目录…

C# 使用 REST API HTTP 客户端生成器

本文内容 使用 AutoClientAttribute使用谓词属性定义 HTTP 方法HTTP 有效负载HTTP 头 显示另外 2 个 备注 此 API 是实验性的。 它可能会在后续版本的库中更改&#xff0c;并且无法保证向后兼容性。 HttpClient是使用 REST API 的好方法&#xff0c;但存在挑战。 其中一个挑…

CMake基础【学习笔记(八)】

声明此博客为转载 CMake基础 文章目录 CMake基础一、准备知识1.1 C的编译过程1.2 静态链接库和动态链接库1.3 为什么需要CMake1.3.1 g 命令行编译1.3.2 CMake简介 二、CMake基础知识2.1 安装2.2 第一个CMake例子2.3 语法基础2.3.1 指定版本2.3.2 设置项目2.3.3 添加可执行文件…

华纳云 宝塔怎么配置香港服务器多ip?

宝塔面板是一款开源的服务器管理面板&#xff0c;提供了简单易用的图形化界面&#xff0c;使用户能够轻松管理和配置服务器。通过切换到香港服务器多IP&#xff0c;用户可以拥有更多的IP资源&#xff0c;提供更灵活的网络服务。 配置香港服务器多IP 1.登录宝塔面板 打开浏览器&…

Goby 漏洞发布| Cisco IOS XE ebui_wsma_http 接口权限绕过漏洞(CVE-2023-20198)

漏洞名称&#xff1a; Cisco IOS XE ebui_wsma_http 接口权限绕过漏洞&#xff08;CVE-2023-20198&#xff09; English Name&#xff1a; Cisco IOS XE ebui_wsma_http API Permission Bypass Vulnerability (CVE-2023-20198) CVSS core: 10 影响资产数&#xff1a; 307282…

kafka为什么如此之快?

天下武功&#xff0c;唯快不破。同样的&#xff0c;kafka在消息队列领域&#xff0c;也是非常快的&#xff0c;这里的块指的是kafka在单位时间搬运的数据量大小&#xff0c;也就是吞吐量&#xff0c;下图是搬运网上的一个性能测试结果&#xff0c;在同步发送场景下&#xff0c;…

以八数码问题为例实现A*算法的求解(未完结)

八数码&#xff1a; 在一个 33 的网格中&#xff0c;1∼8 这 8 个数字和一个 x 恰好不重不漏地分布在这 33 的网格中。 例如&#xff1a; 1 2 3 x 4 6 7 5 8在游戏过程中&#xff0c;可以把 x 与其上、下、左、右四个方向之一的数字交换&#xff08;如果存在&#xff09;。…

(11月4日)GBASE南大通用 x openGauss Meetup,欢迎报名

由openGauss社区、天津南大通用数据技术股份有限公司主办&#xff0c;伟仕佳杰科技有限公司、神州数码&#xff08;中国&#xff09;有限公司协办的“GBASE南大通用 x openGauss Meetup”活动将于2023年11月4日&#xff08;周六&#xff09;在合肥市高新区云飞路66号天源迪科科…

3DEXPERIENCE云端项目管理小工具--Project Planner项目策划者角色

云端3DEXPERIENCE平台提供了一个协作环境&#xff0c;使企业和个人能够以全新的方式实现创新。它将人员、创意、数据和解决方案连接到一个始终在线且可用的协作和交互环境中&#xff0c;可以帮助您的企业提高执行力、生产率并加速创新。 3DEXPERIENCE中的Project Planner项目策…

BUUCTF 后门查杀 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 小白的网站被小黑攻击了&#xff0c;并且上传了Webshell&#xff0c;你能帮小白找到这个后门么&#xff1f;(Webshell中的密码(md5)即为答案)。 密文&#xff1a; 下载附件&#xff0c;解压得到一个网站文件夹。 解…

Nginx搭载负载均衡及前端项目部署

目录 ​编辑 一.Nginx安装 1.安装所需依赖 2.下载并解压Nginx安装包 3.安装nginx 4.启动Nginx服务 二.Tomcat负载均衡 1.准备环境 1.1 准备两个Tomcat 1.2 修改端口号 1.3 配置Nginx服务器集群 2.效果展示 ​编辑三.前端项目打包 ​编辑四.前端项目部署 1.上传项目…

YOLO目标检测——安全帽佩戴检测数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;安全帽佩戴检测数据集可以用于实时检测工作人员是否按照要求佩戴了安全帽&#xff0c;以保障他们的安全数据集说明&#xff1a;安全帽佩戴检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;图片分为带头盔和没带头…

云原生周刊:ingress2gateway 发布 | 2023.10.30

开源项目推荐 m9sweeper m9sweeper 是一个免费且简单的 Kubernetes 安全平台。它将行业标准的开源实用程序集成到一站式 Kubernetes 安全工具中&#xff0c;该工具可以帮助大多数 Kubernetes 管理员保护 Kubernetes 集群以及集群上运行的应用程序。 Kairos Kairos 是在 Kub…

wordpress如何修改数据库里用户ID下一个自增值的开始数字

有时候我们为了让别人认为网站有很多注册用户&#xff0c;会想把网站用户ID的起始数改大一点&#xff0c;因为WP默认的用户ID是从1开始&#xff0c;注册一个就加1&#xff0c;这样别人就很容易知道网站的用户量。 那么如何改呢&#xff1f;首先进phpmyadmin&#xff0c;找到wp…