-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'Transaction' into development
事务和死锁的介绍及相关代码
- Loading branch information
Showing
11 changed files
with
454 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
Navicat Premium Data Transfer | ||
Source Server : local | ||
Source Server Type : MySQL | ||
Source Server Version : 50719 | ||
Source Host : localhost:3306 | ||
Source Schema : cloud_study | ||
Target Server Type : MySQL | ||
Target Server Version : 50719 | ||
File Encoding : 65001 | ||
Date: 31/08/2017 20:26:56 | ||
*/ | ||
|
||
SET NAMES utf8mb4; | ||
SET FOREIGN_KEY_CHECKS = 0; | ||
|
||
-- ---------------------------- | ||
-- Table structure for user | ||
-- ---------------------------- | ||
DROP TABLE IF EXISTS `user`; | ||
CREATE TABLE `user` ( | ||
`id` int(11) NOT NULL AUTO_INCREMENT, | ||
`userName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, | ||
`sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, | ||
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, | ||
`account` int(11) DEFAULT NULL, | ||
PRIMARY KEY (`id`) USING BTREE | ||
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; | ||
|
||
-- ---------------------------- | ||
-- Records of user | ||
-- ---------------------------- | ||
INSERT INTO `user` VALUES (1, 'ZhangSan', '0', '123456', 100); | ||
INSERT INTO `user` VALUES (2, 'LiSi', '0', '123456', 0); | ||
INSERT INTO `user` VALUES (3, 'ZhaoWu', '0', '123456', 0); | ||
INSERT INTO `user` VALUES (4, 'ZhangSi', '0', '123456', 0); | ||
INSERT INTO `user` VALUES (5, 'LiSan', '0', '123456', 0); | ||
INSERT INTO `user` VALUES (6, 'GuoYi', '0', '123456', 0); | ||
|
||
SET FOREIGN_KEY_CHECKS = 1; |
63 changes: 63 additions & 0 deletions
63
src/main/java/com/micro/profession/jdbc/practice/Transaction/TransactionTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package com.micro.profession.jdbc.practice.Transaction; | ||
|
||
import java.sql.Connection; | ||
import java.sql.PreparedStatement; | ||
import java.sql.SQLException; | ||
|
||
import org.apache.commons.dbcp2.BasicDataSource; | ||
|
||
public class TransactionTest { | ||
|
||
public static BasicDataSource ds = null; | ||
|
||
static final String DRIVER_NAME = "com.mysql.jdbc.Driver"; | ||
static String DB_URL = "jdbc:mysql://localhost/cloud_study?useSSL=true"; | ||
static final String USER_NAME = "root"; | ||
static final String PASSWORD = "root"; | ||
|
||
public static void transactionInit() { | ||
ds = new BasicDataSource(); | ||
ds.setUrl(DB_URL); | ||
ds.setDriverClassName(DRIVER_NAME); | ||
ds.setUsername(USER_NAME); | ||
ds.setPassword(PASSWORD); | ||
} | ||
|
||
public static void transferAccount() throws ClassNotFoundException { | ||
Connection conn = null; | ||
PreparedStatement ptmt = null; | ||
try { | ||
conn = ds.getConnection(); | ||
conn.setAutoCommit(false); | ||
ptmt = conn.prepareStatement("update user set account = ? where userName = ?"); | ||
ptmt.setInt(1, 0); | ||
ptmt.setString(2, "ZhangSan"); | ||
ptmt.execute(); | ||
ptmt.setInt(1, 100); | ||
ptmt.setString(2, "LiSi"); | ||
ptmt.execute(); | ||
conn.commit(); | ||
} catch (SQLException e) { | ||
if(conn != null) | ||
try { | ||
conn.rollback(); | ||
} catch (SQLException e1) { | ||
// TODO Auto-generated catch block | ||
e1.printStackTrace(); | ||
} | ||
} finally { | ||
try { | ||
if(conn != null) conn.close(); | ||
if(ptmt != null) ptmt.close(); | ||
} catch (SQLException e) { | ||
e.printStackTrace(); | ||
} | ||
} | ||
} | ||
|
||
public static void main(String[] args) throws ClassNotFoundException { | ||
transactionInit(); | ||
new TransactionTest().transferAccount(); | ||
} | ||
|
||
} |
Oops, something went wrong.