事务&JDBC

目录

1、事务

1.1 概述

1.2 语法

1.3 代码验证

1.4 事务的四大特征

2、JDBC概述

2.1 JDBC概念

2.2 JDBC本质

2.3 JDBC好处

3、JDBC快速入门

4、JDBC API详解

4.1 DriverManager

4.2 Connection

4.3 Statement

4.4 ResultSet

4.5 PreparedStatement

5,数据库连接池

5.1 数据库连接池简介

5.2 数据库连接池实现

5.3 Driud使用


1、事务

1.1 概述

数据库的事务( Transaction )是一种机制、一个操作序列,包含了 一组数据库操作命令
事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令 要么同时成功,要么同时失败
事务是一个不可分割的工作逻辑单元。

1.2 语法

开启事务
START TRANSACTION ;
或者
BEGIN ;
提交事务
commit ;
回滚事务
rollback ;

1.3 代码验证

环境准备
DROP TABLE IF EXISTS account; 

-- 创建账户表 
CREATE TABLE account( 
    id int PRIMARY KEY auto_increment, 
    name varchar(10), 
    money double(10,2) 
);

-- 添加数据 
INSERT INTO account(name,money) values('张三',1000),('李四',1000);
不加事务演示问题
-- 转账操作 
-- 1. 查询李四账户金额是否大于500 

-- 2. 李四账户 -500 
UPDATE account set money = money - 500 where name = '李四'; 
出现异常了... -- 此处不是注释,在整体执行时会出问题,后面的sql则不执行 
-- 3. 张三账户 +500 
UPDATE account set money = money + 500 where name = '张三';
整体执行结果肯定会出问题,我们查询账户表中数据,发现李四账户少了 500

添加事务sql如下:
-- 开启事务 
BEGIN; 
-- 转账操作 
-- 1. 查询李四账户金额是否大于500 

-- 2. 李四账户 -500 
UPDATE account set money = money - 500 where name = '李四'; 

出现异常了... -- 此处不是注释,在整体执行时会出问题,后面的sql则不执行 
-- 3. 张三账户 +500 
UPDATE account set money = money + 500 where name = '张三'; 

-- 提交事务 
COMMIT; 

-- 回滚事务 
ROLLBACK;
上面 sql 中的执行成功进选择执行提交事务,而出现问题则执行回滚事务的语句。以后我们肯定不可能这样操作,而是在
java 中进行操作,在 java 中可以抓取异常,没出现异常提交事务,出现异常回滚事务。

1.4 事务的四大特征

原子性( Atomicity : 事务是不可分割的最小操作单位,要么同时成功,要么同时失败
一致性( Consistency : 事务完成时,必须使所有的数据都保持一致状态
隔离性( Isolation : 多个事务之间,操作的可见性
持久性( Durability : 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
说明:
mysql 中事务是自动提交的。
也就是说我们不添加事务执行 sql 语句,语句执行完毕会自动的提交事务。
可以通过下面语句查询默认提交方式:
SELECT @@autocommit ;

查询到的结果是1 则表示自动提交,结果是0表示手动提交。当然也可以通过下面语句修改提交方式

 set @@autocommit = 0;

2、JDBC概述

2.1 JDBC概念

JDBC 就是使用 Java 语言操作关系型数据库的一套 API ,全称:( Java DataBase Connectivity ) Java 数据库连接

2.2 JDBC本质

官方( sun 公司)定义的一套操作所有关系型数据库的规则,即接口。
各个数据库厂商去实现这套接口,提供数据库驱动 jar 包。
我们可以使用这套接口( JDBC )编程,真正执行的代码是驱动jar包中的实现类。

2.3 JDBC好处

各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发。

可随时替换底层数据库,访问数据库的 Java 代码基本不变。

3、JDBC快速入门

 第一步:编写Java代码。

第二步:Java代码将SQL发送到MySQL服务端。

第三步: MySQL 服务端接收到 SQL 语句并执行该 SQL 语句。
第四步:将 SQL 语句执行的结果返回给 Java 代码。

4、JDBC API详解

4.1 DriverManager

DriverManager(驱动管理类)作用:

注册驱动

==提示:==

MySQL 5之后的驱动包,可以省略注册驱动的步骤

自动加载 jar 包中 META-INF/services/java.sql.Driver 文件中的驱动类

获取数据库连接

url : 连接路径

语法: jdbc:mysql://ip 地址 ( 域名 ): 端口号 / 数据库名称 ? 参数键值对1& 参数键值对 2…
示例: jdbc:mysql://127.0.0.1:3306/db1
== 细节: ==
如果连接的是本机 mysql 服务器,并且 mysql 服务默认端口是3306 ,则 url 可以简写为: jdbc:mysql:/// 数 据库名称? 参数键值对
配置 useSSL=false 参数,禁用安全连接方式,解决警告提示
user :用户名
poassword :密码

4.2 Connection

Connection(数据库连接对象)作用:

获取执行 SQL 的对象

管理事务
4.2.1 获取执行对象
普通执行 SQL 对象
Statement createStatement()
入门案例中就是通过该方法获取的执行对象。
预编译 SQL 的执行 SQL 对象:防止 SQL 注入
PreparedStatement prepareStatement(sql)
通过这种方式获取的 PreparedStatement SQL 语句执行对象是我们一会重点要进行讲解的,它可以防止SQL 注入。
执行存储过程的对象
CallableStatement prepareCall(sql)
通过这种方式获取的 CallableStatement 执行对象是用来执行存储过程的,而存储过程在MySQL 中不常用,所以这个我们将不进行讲解。
4.2.2 事务管理
先回顾一下 MySQL 事务管理的操作:
开启事务 : BEGIN; 或者 START TRANSACTION;
提交事务 : COMMIT;
回滚事务 : ROLLBACK;
MySQL 默认是自动提交事务
开启事务
参与 autoCommit 表示是否自动提交事务, true 表示自动提交事务,false 表示手动提交事务。而开启事务需要将该参数设为为
false
提交事务
回滚事务

4.3 Statement

Statement对象的作用就是用来执行SQL语句。而针对不同类型的SQL语句使用的方法也不一样。

4.4 ResultSet

ResultSet(结果集对象)作用:==封装了SQL查询语句的结果。

4.5 PreparedStatement

PreparedStatement作用:预编译SQL语句并执行:预防SQL注入问题

5,数据库连接池

5.1 数据库连接池简介

数据库连接池是个容器,负责分配、管理数据库连接 (Connection)

它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
好处
资源重用
提升系统响应速度
避免数据库连接遗漏

5.2 数据库连接池实现

标准接口: ==DataSource==
官方 (SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。该接口提供了获取连接的功能:
Connection getConnection ()
那么以后就不需要通过 DriverManager 对象获取 Connection对象,而是通过连接池(DataSource )获取 Connection 对象。

 常见的数据库连接池

DBCP
C3P0
Druid
我们现在使用更多的是 Druid ,它的性能比其他两个会好一些。
Druid (德鲁伊)
Druid 连接池是阿里巴巴开源的数据库连接池项目
功能强大,性能优秀,是 Java 语言最好的数据库连接池之一

5.3 Driud使用

导入jar druid-1.1.12.jar

定义配置文件

加载配置文件
获取数据库连接池对象
获取连接
随着信息产业的不断壮大,对软件的需求也越来越多,推动了软件开发行业的迅猛发展,团体开发软件已经是非常重要的软件开发手段,为了加强团体协作的高效性和对软件开发的同步和准确性,实现对软件开发过程的有效的管理和对开发事务的有效及时的处理,就需要一款适合软件开发团队协作使用的事务跟踪和管理系统。 系统主要基于.NET Framework的体系结构,应用ASP.NET开发技术以及C#语言和ADO.NET,实现了基于ASP.NET的事务跟踪系统,首先分析了团体开发软件时的协作中碰到的同步性、时效性等问题,分析并获取了本事务跟踪系统的原始需求,在设计系统时采用了表现层USL、业务逻辑层BLL、数据访问层DAL以及数据访问层接口IDAL的三层模型,另外采用了Log4net为系统的管理并记录日志。实现了对事务的及时跟踪,使得对信息的管理更加及时、高效,提高了工作效率,该系统的主要功能的功能有人员注册、密码修改及找回,项目的创建、人员配置、人员锁定解锁,任务的创建、状态修改、任务的搜索、关注,邮件提醒,以及后台线程对数据库的操作实现历史任务信息的自动存档功能。 系统布署上线以后运行良好,经过对使用者的使用调查,加入了任务留言时邮件提醒、新增了对任务类别的管理及搜索,使得系统有更好的用户体验。 关键词:ASP.NET,ADO.NET,C#,Log4net,IDAL,事务跟踪
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁༺๑小王不是程序员๑༻꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值