1 分别使用DBCP和C3P0连接池,对数据库的一张表进行 增删改查操作,并测试事务,如果发生异常事务回滚(截图展示结果)

先创建一个数据库

#创建数据库
CREATE DATABASE db6 CHARACTER SET utf8;
#使用数据库
USE db6;
#创建员工表
CREATE TABLE emp ( eid INT PRIMARY KEY AUTO_INCREMENT , ename VARCHAR (20), -- 员工姓名 age INT , -- 员工年龄 sex VARCHAR (6), -- 员工性别 salary DOUBLE , -- 薪水 empdate DATE -- 入职日期
);#插入数据
INSERT INTO emp (eid, ename, age, sex, salary, empdate) VALUES(NULL,'张三',22,'女',4000,'2018-11-12');
INSERT INTO emp (eid, ename, age, sex, salary, empdate) VALUES(NULL,'李四',20,'女',5000,'2019-03-14');
INSERT INTO emp (eid, ename, age, sex, salary, empdate) VALUES(NULL,'王二',40,'男',6000,'2020-01-01');
INSERT INTO emp (eid, ename, age, sex, salary, empdate) VALUES(NULL,'麻子',25,'男',3000,'2017-10-01');

DBCP

public class zy01 {public static final String DRIVER_NAME = "com.mysql.jdbc.Driver";public static final String URl = "jdbc:mysql://localhost:3306/db6";public static final String USERNAME = "root";public static final String PASSWORD = "12343456";public static BasicDataSource dataSource = new BasicDataSource();static {dataSource.setDriverClassName(DRIVER_NAME);dataSource.setUrl(URl);dataSource.setUsername(USERNAME);dataSource.setPassword(PASSWORD);}public static Connection getConnection() throws SQLException {Connection conn = dataSource.getConnection();return conn;}//提供事务回滚的方法public static void rollback(Connection conn){try {conn.rollback();} catch (SQLException e) {e.printStackTrace();}}public static void close(Connection conn, Statement st){if (conn != null && st != null){try {st.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}}public static void close(Connection conn, Statement st, ResultSet rs){if (conn != null && st != null && rs != null){try {rs.close();st.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}}}
public class zy01Test {public static void main(String[] args)  {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = zy01.getConnection();ps = conn.prepareStatement("select * from emp");rs = ps.executeQuery();while (rs.next()) {String name = rs.getString("ename");String age = rs.getString("age");String salary = rs.getString("salary");System.out.println("姓名:" + name + ",年龄:" + age + ",薪资" + salary);}}catch (Exception e){e.printStackTrace();zy01.rollback(conn);}finally {DBCPUtils.close(conn,ps,rs);}}}

@Testpublic void testInsert() throws Exception {//1.工具类获取链接Connection conn = zy01.getConnection();//2.获取 StatementStatement statement = conn.createStatement();//2.1编写sqlString sql = "insert into emp values (null,'哈哈','11','女','1000','2022-4-28')";//2.2 执行sqlint i = statement.executeUpdate(sql);//3.释放资源zy01.close(conn,statement);}

@Testpublic void testDelete() throws SQLException {Connection conn = zy01.getConnection();Statement statement = conn.createStatement();String sql = "delete from emp where eid = 2 ";statement.executeUpdate(sql);zy01.close(conn,statement);}

@Testpublic void testUpDate() throws SQLException {Connection conn = zy01.getConnection();Statement statement = conn.createStatement();String sql ="update emp set ename ='嘿嘿' where eid =3 ";int i =statement.executeUpdate(sql);System.out.println(i);zy01.close(conn,statement);}

@Testpublic void testSelect() throws SQLException {Connection conn = zy01.getConnection();Statement statement = conn.createStatement();String sql = "select * from emp where eid in (1,3,5)";ResultSet rs= statement.executeQuery(sql);//解析结果集while (rs.next()){String eid = rs.getString("eid");String ename = rs.getString("ename");String age = rs.getString("age");String sex = rs.getString("sex");System.out.println("eid:" + eid +",ename:" +ename +",age:" + age +",sex:" + sex);}zy01.close(conn,statement,rs);}

C3P0

我重新建了表employeezy如下,操作一样就不展示了

public class zy02 {public static ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");public static Connection getConnection() throws SQLException {return dataSource.getConnection();}public static void rollback(Connection conn){try {conn.rollback();} catch (SQLException e) {e.printStackTrace();}}public static void close(Connection conn, Statement st){if (conn != null && st != null){try {st.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}}public static void close(Connection conn, Statement st, ResultSet rs){if (conn != null && st != null && rs != null){try {rs.close();st.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

输出工资在4000-5000的名字

public class zy02Test {public static void main(String[] args) {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try{conn = zy02.getConnection();ps = conn.prepareStatement("select * from employeezy where salary between ? and ?");ps.setInt(1,4000);ps.setInt(2,5000);//执行sqlrs = ps.executeQuery();//获取结果集while (rs.next()){System.out.println(rs.getString("ename"));}}catch (Exception e){e.printStackTrace();zy02.rollback(conn);}finally {zy02.close(conn,ps,rs);}}}

结果:

增:

@Testpublic void testInsert() throws Exception {Connection conn = zy02.getConnection();Statement statement = conn.createStatement();String sql = "insert into employeezy values (null,'呵呵','11','女','7000','2022-4-28')";int i = statement.executeUpdate(sql);zy02.close(conn,statement);}

删:

 @Testpublic void testDelete() throws SQLException {Connection conn = zy02.getConnection();Statement statement = conn.createStatement();String sql = "delete from employeezy where eid = 3 ";statement.executeUpdate(sql);zy02.close(conn,statement);}

​​​​​​​​​​​​​​

改:

@Testpublic void testUpDate() throws SQLException {Connection conn = zy02.getConnection();Statement statement = conn.createStatement();String sql ="update employeezy set ename ='扣扣大有' where eid =4 ";int i =statement.executeUpdate(sql);System.out.println(i);zy02.close(conn,statement);}

查:

 @Testpublic void testSelect() throws SQLException {Connection conn = zy02.getConnection();Statement statement = conn.createStatement();String sql = "select * from employeezy where eid in (2,4)";ResultSet rs= statement.executeQuery(sql);//解析结果集while (rs.next()){String eid = rs.getString("eid");String ename = rs.getString("ename");String age = rs.getString("age");String sex = rs.getString("sex");System.out.println("eid:" + eid +",ename:" +ename +",age:" + age +",sex:" + sex);}zy02.close(conn,statement,rs);}

2022-4-28作业相关推荐

  1. English Learning - Day22 作业打卡 2022.12.28 周三

    English Learning - Day22 作业打卡 2022.12.28 周三 引言 1. 否认这一点就是闭眼不看事实. 2. 他承认拿了手表. 3. 考驾照前我还得再练练. 4. 没有你陪伴 ...

  2. Linux5.28作业详解磁盘配额与测试

    Linux5.28作业详解 1.分别为自己和本班同学分别创建账号,为本班创建一个用户组,将班上同学加入这个用户组 su root 进入管理员模式 [root@xxx 桌面]# useradd xxx ...

  3. 《实战:centos上安装Go软件》-2022.4.28

    <实战:centos上安装Go软件>-2022.4.28 目录 文章目录 <实战:centos上安装Go软件>-2022.4.28 目录 实验环境 实验软件 1.下载安装包 2 ...

  4. NE40E华为产品文档-----笔记(2022.9.28)

    ** NE40E华为产品文档-----笔记(2022.9.28) ** P34开始 全连接full Mesh 中文解释:全网状 英文来历:Full Mesh表示网络的一种连接形式,即所有结点之间都直接 ...

  5. 实战:Dockerfile构建镜像-2022.2.28

    实战:Dockerfile构建镜像-2022.2.28 目录 文章目录 实战:Dockerfile构建镜像-2022.2.28 目录 实验环境 实验软件 1.Dockerfile概述 2.Docker ...

  6. 2022/03/03js作业第一个不同宽度变色第二个是输入几年几月几日判断是今年的第几天(不算闰年2月为28日)

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>< ...

  7. 2022计算机系统大作业————hit

    -/************************************************************************************************** ...

  8. 【哈工大2022计算机系统大作业“程序人生”】

    计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机 学 号 120L021504 班 级 2003012 学 生 乔江洋 指 导 教 师 郑贵滨 计算机科学与技术学院 202 ...

  9. iMeta | 第1卷第1期在线正式发布(2022/3/28)

    点击蓝字 关注我们 iMeta期刊 第1卷第1期 在线正式发布 ► iMeta是世界上第一本专注于宏基因组.微生物组和生物信息前沿交叉的期刊 ► 2022年3月28日,iMeta第1卷第1期在线发布 ...

  10. 哈工大2022计算机系统大作业

    计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 计算机 指 导 教 师 吴锐 计算机科学与技术学院 2021年5月 摘  要 本文介绍了hello程序的一生. ...

最新文章

  1. C#用xpath查找某节点
  2. 时光机穿梭---版本回退
  3. ibm服务器和微软,微软与IBM不得不说的事情
  4. java 本地方法栈_Java虚拟机栈和本地方法栈
  5. ansible的参数及常用模块
  6. 快学Scala习题解答—第三章 数组相关操作
  7. Nginx+Php-fpm+MySQL+Redis源代码编译安装指南
  8. 3 photolemur 样式下载_全自动照片美化软件Photolemur mac特别版
  9. anaconda安装python包_Anaconda:安装或更新 Python 第三方包
  10. 帆软报表学习笔记——根据参数查询
  11. [Windows Server 2008] 404错误设置方法
  12. /bin/sh: cc: 未找到命令
  13. spring学习--AOP术语
  14. HDU 6122 今夕何夕 【数学公式】 (2017百度之星程序设计大赛 - 初赛(A))
  15. qt实现抽屉效果,类似qq的好友功能
  16. 神策分析 Web JS SDK 功能介绍
  17. mac 版本charles安装报错-Charles cannot configure your proxy settings while it is on a read-only volume.
  18. SOLIDWORKS凸台拉伸命令,你真的会用吗?
  19. python练习------京牌车牌摇号
  20. HKUST-Aerial-Robotics /grad_traj_optimizationPublic

热门文章

  1. xmind贴纸_如何使用彩色背景或大贴纸创建Facebook状态
  2. 朋友千千万,知己有几人。转些短句。
  3. OpenStack计算节点nove启动报错
  4. 山西工商学院计算机二级网址,2021年山西工商学院教务处登录入口
  5. Aleo Wagyu钱包
  6. OMNIPAY(欧米派、欧米链)-全球领先的多链数字钱包
  7. Vue.js快速入门之五:Mockjs的使用和语法详解
  8. CSS进阶之基线(参考线)
  9. 系统渗透与防护——信息收集与暴力破解
  10. 少女口述:我跟一个小混混那不堪回首的感情