常用连接池的使用(jdbc)java 连接数据库
C3P0
导入依赖
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency>
接下来是代码
ComboPooledDataSource dataSource =new ComboPooledDataSource(); 获取c3p0数据源
dataSource.setDriverClass("com.mysql.jdbc.Driver"); 注册驱动
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/db2"); 用你自己的数据库,db2是我的可以改你的
dataSource.setUser("root"); 填你自己的账号
dataSource.setPassword("mmmm"); 填你自己的密码
Connection connection = dataSource.getConnection(); 获取连接池
PreparedStatement ps = connection.prepareStatement("INSERT INTO user VALUES (?, ?, ?)");
ps.setInt(1, 120); // 设置第一个占位符的值为 120,注意索引是从1开始的
ps.setString(2, "l11xxx111"); // 设置第二个占位符的值为 "l11xxx111"
ps.setInt(3, 1051); // 设置第三个占位符的值为 1051
ps.executeUpdate();
ps.close();
Druid
导入依赖
<dependencies><!-- Druid 数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version> <!-- 根据你的需求使用合适的版本 --></dependency><!-- MySQL 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version> <!-- 根据你的数据库版本使用合适的版本 --></dependency>
</dependencies>
代码
import com.alibaba.druid.pool.DruidDataSource;// ...DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/db2");
dataSource.setUsername("root");
dataSource.setPassword("mmmm");// 设置其他 Druid 数据源属性,根据需要配置Connection connection = dataSource.getConnection();
PreparedStatement ps = connection.prepareStatement("INSERT INTO user VALUES (?, ?, ?)");
ps.setInt(1, 120);
ps.setString(2, "l11xxx111");
ps.setInt(3, 1051);
ps.executeUpdate();// 关闭资源
ps.close();
connection.close();
dataSource.close(); // 关闭 Druid 数据源
java 原生连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class JDBCDemo {public static void main(String[] args) {// JDBC连接的URL,这里的URL指向你的MySQL数据库String url = "jdbc:mysql://localhost:3306/db2";String username = "root";String password = "mmmm";try {// 加载驱动程序Class.forName("com.mysql.cj.jdbc.Driver");// 获取数据库连接Connection connection = DriverManager.getConnection(url, username, password);// SQL语句,使用占位符String sql = "INSERT INTO user VALUES (?, ?, ?)";// 创建 PreparedStatement 对象PreparedStatement ps = connection.prepareStatement(sql);// 设置占位符的值ps.setInt(1, 120);ps.setString(2, "l11xxx111");ps.setInt(3, 1051);// 执行插入操作int affectedRows = ps.executeUpdate();System.out.println("Inserted " + affectedRows + " row(s).");// 关闭资源ps.close();connection.close();} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}
}
易错bug
dataSource.setDriverClass("com.mysql.jdbc.Driver"); 他可以换成
dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
原因如下:
在过去的 MySQL 版本中,常用的 JDBC 驱动类是com.mysql.jdbc.Driver。然而,MySQL 在 Connector/J 5.x 版本之后,推荐使用新的驱动类com.mysql.cj.jdbc.Driver,这是 MySQL 8.x 版本及以上的推荐使用的驱动类。
所以,你可能会在一些代码示例中看到使用com.mysql.jdbc.Driver,而在另一些示例中看到com.mysql.cj.jdbc.Driver。为了确保兼容性和推荐性,最好使用最新的 MySQL Connector/J 驱动,并使用com.mysql.cj.jdbc.Driver。
如果你使用的是 MySQL 8.x 版本,建议使用com.mysql.cj.jdbc.Driver。如果使用的是较旧的 MySQL 版本,你可能会看到com.mysql.jdbc.Driver,但也建议尽可能升级到较新的驱动版本。
相关文章:
常用连接池的使用(jdbc)java 连接数据库
C3P0 导入依赖 <!-- https://mvnrepository.com/artifact/c3p0/c3p0 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><!-- https://mvnrepository.c…...
linux嵌入式时区问题
目录 操作说明实验参考 最近有个针对时区的需求,研究了下。 查询网上的一些设置,发现基本都是系统中自带的一些文件,然后开机时解析,或者是有个修改的命令。 操作 但针对嵌入式常用到的 busybox 制作的最小系统,并没…...
Spring基于xml注入bean的几种方式; Spring 框架中都用到了哪些设计模式;Spring的自动装配
文章目录 Spring基于xml注入bean的几种方式:Spring的自动装配:在Spring框架xml配置中共有5种自动装配:基于注解的方式: Spring 框架中都用到了哪些设计模式? Spring基于xml注入bean的几种方式: ࿰…...
name 属性:提高 Vue 应用可维护性的关键
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
百战python04-循环结构
文章目录 趣味进度条:通过一个简单的进度条来进入循环的世界吧for-in循环语法内置函数range()练习:累和下面是使用for循环对字符串(第一个for)、range函数的循环取值示例for循环对字典、列表取值(后面会讲解字典,列表)while循环while循环实现猜数字小游戏结束循环的操…...
JVM字节码文件的相关概述解读
Java全能学习面试指南:https://javaxiaobear.cn 1、字节码文件 从下面这个图就可以看出,字节码文件是可以跨平台使用的 想要让一个Java程序正确地运行在JVM中,Java源码就必须要被编译为符合JVM规范的字节码。 https://docs.oracle.com/java…...
什么是轻量应用服务器?可以从亚马逊云科技的优势入手了解
什么是轻量应用服务器? 随着如今各行各业对云计算的需求越来越多,云服务器也被越来越多的企业所广泛采用。其中,轻量应用服务器是一种简单、高效、可靠的云计算服务,能够为开发人员、企业和个人提供轻量级的虚拟专用服务器&#x…...
HUAWEI华为MateBook X Pro 2022 12代酷睿版(MRGF-16)笔记本电脑原装出厂Windows11系统工厂模式含F10还原
链接:https://pan.baidu.com/s/1ZI5mR6SOgFzMljbMym7u3A?pwdl2cu 提取码:l2cu 华为原厂Windows11系统工厂包,带F10一键智能还原恢复功能。 自带指纹、面部识别、声卡、网卡、显卡、蓝牙等所有驱动、出厂主题壁纸、Office办公软件、华为…...
Vue3 响应式数据 reactive使用
ref 与 reactive 是 vue3 提供给我们用于创建响应式数据的两个方法。 reactive 常用于创建引用数据,例如:object、array 等。 reactive 则是通过 proxy 来实现的响应式数据,并配合 reflect 操作的源对象。 reactive 创建引用数据࿱…...
Kafka 如何实现顺序消息
版本说明 本文所有的讨论均在如下版本进行,其他版本可能会有所不同。 Kafka: 3.6.0Pulsar: 2.9.0RabbitMQ 3.7.8RocketMQ 5.0Go1.21github.com/segmentio/kafka-go v0.4.45 结论先行 Kafka 只能保证单一分区内的顺序消息,无法保证多分区间的顺序消息…...
什么是 Jest ? Vue2 如何使用 Jest 进行单元测试?Vue2 使用 Jest 开发单元测试实例
什么是Jest? Jest 是一个流行的 JavaScript 测试框架,由 Facebook 开发并维护,专注于简单性和速度。它通常用于编写 JavaScript 和 TypeScript 应用程序的单元测试、集成测试和端到端测试。 特点: 简单易用: Jest 提供简洁的 API 和易于理解的语法,使得编写测试用例变得…...
【云原生 Prometheus篇】Prometheus架构详解与核心组件的应用实例(Exporters、Grafana...)
Prometheus Part1 一、常用的监控系统1.1 简介1.2 Prometheus和zabbix的区别 二、Prometheus2.1 简介2.2 Prometheus的主要组件1)Prometheus server2)Exporters3)Alertmanager4)Pushgateway5)Grafana 2.3 Prometheus的…...
Mindomo Desktop for Mac免费思维导图软件,助您高效整理思维
思维导图是一种强大的工具,可以帮助我们整理思维、提高记忆力、激发创造力。而Mindomo Desktop for Mac作为一款免费的思维导图软件,能够帮助我们更高效地进行思维整理和项目管理。在本文中,我们将介绍Mindomo Desktop for Mac的功能和优势&a…...
udp通信socket关闭后,缓存不清空
udp通信socket关闭后,缓存不清空 udp通信socket关闭后,缓存不清空如何清空udp缓存 udp通信socket关闭后,缓存不清空 关闭一个 UDP socket 连接后,底层接收缓冲区中存储的数据不会被清空。实际上,关闭 socket 连接并不…...
perf火焰图使用
task1: 最简单的 on-cpu 火焰图 首先生成最简单的 on-cpu 火焰图,参考 https://www.bilibili.com/video/BV1hg4y1o7Sb/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 首先安装工具,这似乎是 Linux 自带的…...
Java如何使用jwt进行登录拦截和权限认证
登录如下 登录拦截 拦截如下 权限认证...
Go语言多线程爬虫万能模板它来了!
对于长期从事爬虫行业的技术员来说,通过技术手段实现抓取海量数据并且做到可视化处理,我在想如果能写一个万能的爬虫模板,后期遇到类似的工作只要套用模板就能解决大部分的问题,如此提高工作效率何乐而不为? 以下是一个…...
【RTP】RTPSenderAudio::SendAudio
RTPSenderAudio 可以将一个opus帧封装为rtp包进行发送,以下是其过程:RTPSenderAudio::SendAudio :只需要提供payload部分 创建RtpPacketToSend 并写入各个部分 填充payload部分 sender 本身分配全session唯一的twcc序号 if (!rtp_sender_->...
Linux反弹SHell与检测思路
免责声明 文章仅做经验分享用途,利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!!! 反弹shell payload在线生成 https://www.chinabaiker.com/Hack-Tools/ Online - Reverse Shell G…...
【Netty专题】Netty调优及网络编程中一些问题补充(面向面试学习)
目录 前言阅读对象阅读导航笔记正文一、如何选择序列化框架1.1 基本介绍1.2 在网络编程中如何选择序列化框架1.3 常用Java序列化框架比较 二、Netty调优2.1 CONNECT_TIMEOUT_MILLIS:客户端连接时间2.2 SO_BACKLOG:最大同时连接数2.3 TCP_NODELAY…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
