博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【DRP】【SQL】-悲观锁-防止多用户同时操作时出现脏数据
阅读量:4677 次
发布时间:2019-06-09

本文共 1626 字,大约阅读时间需要 5 分钟。

1     /** 2      * 根据表名生成该表的序列 3      * @param tableName 4      * @return 返回生成的序列 5      */ 6     //全局方法 -加锁 7     //public static synchronized int generate(String tableName) {    8     //局部成员方法-加锁 9     //public synchronized int generate(String tableName) {10         //synchronized(this) {
11 public static int generate(String tableName) {12 //使用数据库的悲观锁for update13 String sql = "select value from t_table_id where table_name=? for update";14 Connection conn = null;15 PreparedStatement pstmt = null;16 ResultSet rs = null;17 int value = 0;18 try {19 conn = DbUtil.getConnection();20 //开始事务21 DbUtil.beginTransaction(conn);22 pstmt = conn.prepareStatement(sql);23 pstmt.setString(1, tableName);24 rs = pstmt.executeQuery();25 if (!rs.next()) {26 throw new RuntimeException();27 }28 value = rs.getInt("value");29 value++; //自加30 modifyValueField(conn, tableName, value);31 //提交事务32 DbUtil.commitTransaction(conn);33 }catch(Exception e) {34 e.printStackTrace();35 //回滚事务36 DbUtil.rollbackTransaction(conn);37 throw new RuntimeException();38 }finally {39 DbUtil.close(rs);40 DbUtil.close(pstmt);41 DbUtil.resetConnection(conn); //重置Connection的状态42 DbUtil.close(conn);43 }44 return value;45 }

 

总结:不断提高自己编程效率!

转载于:https://www.cnblogs.com/yinweitao/p/5635646.html

你可能感兴趣的文章
Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据...
查看>>
环境搭建
查看>>
报错TypeError: $(...).live is not a function解决方法
查看>>
C#设计模式系列 8 ----Builder 生成器模式之--发工资了,带老婆到 岗顶百脑汇配置电脑...
查看>>
Servlet学习的两个案例之网站访问次数的统计
查看>>
读取 Excel 之 Epplus
查看>>
Knockout v3.4.0 中文版教程-14-控制文本内容和外观-style绑定
查看>>
Highcharts 统计图
查看>>
流式套接字:基于TCP协议的Socket网络编程(案例2)
查看>>
安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置(转)
查看>>
【转】Oracle DECODE函数的语法介绍
查看>>
集成Glide4.3.1出错!AbstractMethodError: abstract method "void com.bumptech.glide.module
查看>>
滴滴故障表
查看>>
Android 显示原理简介
查看>>
Windows7系统运行hadoop报Failed to locate the winutils binary in the hadoop binary path错误
查看>>
Arcgis 10.1安装
查看>>
关机时长时间停留在”正在保存设置“的解决办法
查看>>
vue使用video.js解决m3u8视频播放格式
查看>>
Ubuntu下配置使用maven
查看>>
常用sql语句
查看>>