DBC中悲观锁介绍附案例详解

了解下DBC中悲观锁:

代码如下:

BDUtils 工具类:

package JDBC;

import java.sql.*;

public class BDUtils {

private BDUtils() {

}

static {

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public static Connection connecTion() throws SQLException {

return DriverManager.getConnection("jdbc:mysql://localhost:3306/center", "root", "123456");

}

public static void close(Connection conn, Statement ps, ResultSet rt) throws SQLException {

if (conn != null) conn.close();

if (ps != null) ps.close();

if (rt != null) rt.close();

}

}

实现类一:

package JDBC;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class JDBCDButils {

public static void main(String[] args) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rt = null;

try {

//获取资源

conn = BDUtils.connecTion();

//手动开启事务

conn.setAutoCommit(false);

String sql = "select * from center_user where center_name like ? for UPDATE";

ps =conn.prepareStatement(sql);

ps.setString(1, "王%");

rt = ps.executeQuery();

while (rt.next()){

System.out.println(rt.getString("center_name"));

}

//提交事务

conn.commit();

} catch (SQLException throwables) {

//回滚事务

if (conn != null){

try {

conn.rollback();

} catch (SQLException e) {

e.printStackTrace();

}

}

throwables.printStackTrace();

}finally {

try {

BDUtils.close(conn, ps, rt);

} catch (SQLException throwables) {

throwables.printStackTrace();

}

}

}

}

实现类二:

package JDBC;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class JDBCDButilsT {

public static void main(String[] args) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rt = null;

try {

//获取资源

conn = BDUtils.connecTion();

String sql = "UPDATE center_user SET CENTER_AGE = ? where center_name = ? ";

ps = conn.prepareStatement(sql);

ps.setInt(1, 38);

ps.setString(2, "王涛");

int count = ps.executeUpdate();

System.out.println("共影响:" + count + "行");

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

BDUtils.close(conn, ps, rt);

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

输出结果:

Lock wait timeout exceeded; try restarting transaction

当实现类一的事务没有提交时, for update 查询语句进行了锁定,可以理解为行级锁锁定,其他任何程序或者线程在事务没有提交时,都不能对包含的数据进行DML操作

wow mysql dbc_DBC中悲观锁介绍附案例详解相关推荐

  1. 一文搞懂Oracle 0 至 6 级锁(附案例详解)

    11g Concepts中摘录的锁的信息 Table Locks (TM) A table lock, also called a TM lock, is acquired by a transact ...

  2. vb mysql ado_VB中的ADO数据对象编程详解

    ADO是ActiveX Data Objects 的缩写,是一项新的数据库的存取技术 那天听到一位同学说他的女朋友是学新闻的可也学会了数据库,可学计算机的自己却还是不会,总觉得有点汗颜.在各网站的论坛 ...

  3. mysql数据库中index什么意思_MySQL Index详解

    FROM:http://blog.csdn.net/tianmo2010/article/details/7930482 ①MySQL Index 一.SHOW INDEX会返回以下字段 1.Tabl ...

  4. Java动态代理(以现实中我们熟悉的中介代理租房、卖房模式理解)(附案例详解)

    关于代理,在北京生活过的人,第一反应就是中介.因为本人做过中介,所以对其内部运转也较为了解,现在就以中介买卖租赁房屋这个事情来详细地解答一下动态代理的实现.话不多说,上代码:(把代码连同注释复制下来粘 ...

  5. excel取整函数_10个Excel实用技巧 | 附案例详解

    今天给大家分享10个实用的EXCEL技巧.跟那些烂大街的什么提取生日不一样,可能会比较复杂,所以我会附上详细的函数解释.说明和思路.使用环境以EXCEL2007默认安装为准.强烈建议大家抛弃2003, ...

  6. 【CentOS7】selinux介绍及案例详解

    setenforce是Linux的selinux防火墙配置命令 〇.简介: SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Li ...

  7. S-function入门及案例详解(2)——S-function基本案例介绍

    目录 一.案例1--对波形的幅值进行放大 1.1 案例分析 1.2 案例详解 1.3 输出波形 二.案例2--对波形的幅值进行放大拓展 2.1 案例分析 2.2 案例详解 2.3 输出波形 三.案例3 ...

  8. mysql乐观和悲观锁实现_mysql实现乐观锁和悲观锁该怎么编写?

    乐观锁和悲观锁相信大家都是知道的,这是java中的基础知识,今天我们就来看看它们两者该如何使用代码实现吧. 乐观锁实现 1).表设计 表task,分别有三个字段id,value.version 2). ...

  9. mysql安装后目录介绍,MySQL安装后的目录结构及配置文件详解

    MySQL安装后的目录结构及配置文件详解 MySQL安装后的目录结构及配置文件详解 MySQL目录结构说明 MySQL 安装完成后,会在磁盘上生成一个目录,该目录就被称为 MySQL 的安装目录. M ...

最新文章

  1. CNN和VGGNet-16背后的架构
  2. 在Android Studio进行“简单配置”单元测试(Android Junit)
  3. 生成私钥 p q rsa_【安全】理解 RSA 算法
  4. 【Elasticsearch】Elasticsearch 索引生命周期管理
  5. I00008 百鸡问题
  6. Mina(1):快速上手
  7. [diy-windows系统] Windows下dism 集成系统补丁、驱动
  8. SCDM学习笔记(1)
  9. 阿里云网站域名备案注销方法
  10. 电信手机手机最快服务器是哪个,移动、电信、联通4G上网速度,哪家速度最快?...
  11. 北理工集训 Day1—Day2 (部分算法题目)
  12. Nature综述:2万字带你系统入门鸟枪法宏基因组实验和分析
  13. python 列表嵌套字典 添加修改删除_python3--字典,字典的嵌套,概念:分别赋值
  14. android5.1 Recovery添加从U盘升级功能【转】
  15. jQuery 事件实现滑动示例
  16. labview 加密VI如何破解密码
  17. GOSSIP PROTOCOL(又被称为反熵Anti-Entropy, 一种弱一致性, 同步信息交换通信的协议)...
  18. 制造业企业招工难,怎么从根本上解决?
  19. 科大奥瑞物理实验——声速的测量
  20. 闲来无事,过了三天“神雕侠侣”的生活

热门文章

  1. 一位法国女数学史家与中国两代同行的40年交往
  2. 取火的N种方式:学好物理是野外求生第一步
  3. 第一次失效_特斯拉螺栓腐蚀失效分析_搜狐汽车
  4. java文件下载至linux乱码,JAVA 文件下载乱码问题解决办法
  5. 23种设计模式之备忘录模式
  6. 【转载保存】mapreduce优秀文章
  7. 预处理指令 #pragma 的使用
  8. 数据是如何被保护的?高质量存储告诉你
  9. 基于 Flink + ClickHouse 打造轻量级点击流实时数仓
  10. 阿里云容器服务发布 Knative 托管服务