首页 > 其他分享 >JDBC 事物Transaction

JDBC 事物Transaction

时间:2022-10-14 18:33:27浏览次数:43  
标签:JDBC String 事物 st SQLException Transaction static null conn

//Test

 1 import com.zhongxy.utils.JdbcUtils;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 
 8 public class TestTransaction {
 9     public static void main(String[] args) {
10         Connection conn = null;
11         PreparedStatement st = null;
12         ResultSet rs = null;
13         try {
14             conn = JdbcUtils.getConnection();
15             //关闭自动提交  也就是开启事物
16             conn.setAutoCommit(false);
17 
18             String sql1 = "update users set price = price + 100 where id = 1";
19             st = conn.prepareStatement(sql1);
20             st.executeUpdate();
21 
22             String sql2 = "update users set price = price - 200 where id = 1";
23             st = conn.prepareStatement(sql2);
24             st.executeUpdate();
25 
26             conn.commit();//事物完毕,提交
27             System.out.println("执行成功");
28         } catch (SQLException e) {
29             try {
30                 conn.rollback();
31             } catch (SQLException e1) {
32                 e1.printStackTrace();
33             }
34             e.printStackTrace();
35         }finally {
36             JdbcUtils.release(conn,st,rs);
37         }
38     }
39 }

//Utils

 1 public class JdbcUtils {
 2     private static String driver = null;
 3     private static String url = null;
 4     private static String username = null;
 5     private static String password = null;
 6     static {
 7         try{
 8             InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
 9             Properties properties = new Properties();
10             properties.load(in);
11             driver = properties.getProperty("driver");
12             url = properties.getProperty("url");
13             username = properties.getProperty("username");
14             password = properties.getProperty("password");
15 
16             //1.加载驱动
17             Class.forName(driver);
18         }catch (Exception e){
19             e.printStackTrace();
20         }
21         
22     }
23     //获取连接
24     public static Connection getConnection() throws SQLException {
25          return DriverManager.getConnection(url,username,password);
26     }
27     //释放资源
28     public  static void release(Connection conn, Statement st, ResultSet rs){
29         if(rs!=null){
30             try{
31                 rs.close();
32             } catch (SQLException e) {
33                 e.printStackTrace();
34             }
35         }
36         if(st!=null){
37             try {
38                 st.close();
39             } catch (SQLException e) {
40                 e.printStackTrace();
41             }
42         }
43         if(conn!=null){
44             try {
45                 conn.close();
46             } catch (SQLException e) {
47                 e.printStackTrace();
48             }
49         }
50 
51     }
52 
53 }

 

标签:JDBC,String,事物,st,SQLException,Transaction,static,null,conn
From: https://www.cnblogs.com/kidzxy/p/16792591.html

相关文章

  • 使用 sharding-jdbc 进行分表
    由于单表所支撑的数据量有限,打算使用shardingjdbc进行分库分表。由于之前阅读过相关的博客,考虑使用基因法进行分表。此时shardingspherejdbc的发布版本已更新到5.2......
  • JDBC C3P0连接池
    //Utils1importcom.mchange.v2.c3p0.ComboPooledDataSource;2importjavax.sql.DataSource;3importjava.sql.Connection;4importjava.sql.ResultSet;5i......
  • 714.best-time-to-buy-and-sell-stock-with-transaction-fee 买卖股票的最佳时机含手
    问题描述714.买卖股票的最佳时机含手续费解题思路分为手中有股票和无股票两种情况讨论,设定在卖出股票时支出手续费:手中有股票:dp[i][0]=max(dp[i-1][0],dp[i-......
  • JDBC 使用加密的PerpareStatment和属性池连接数据库
    //工具类和属性池和  Statment文章的一致 //测试类1publicclassTestInsert{2publicstaticvoidmain(String[]args){3Connectionconn......
  • JDBC statment连接数据库
    publicclassjdbcFirstDemo{publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{//1.加载驱动Class.forName("com.mysq......
  • java核心技术第四篇之JDBC第二篇
    01.JDBC连接池_连接池的概念:1).什么是连接池:对于多用户程序,为每个用户单独创建一个Connection,会使程序降低效率。这时我们可以创建一个"容器",这个容器中,先缓存一些Connect......
  • 546 JDBC练习_insert语句和547JDBC练习_update语句
    JDBC练习_insert语句publicstaticvoidmain(String[]args)throwsException{Statementstmt=null;Connectionconn=null;try{......
  • JDBC
    概念:JavaDataBaseConnectivityJava数据库连接,Java语言操作数据库JDBC本质:其实就算官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这......
  • JDBC概念和JDBC快速入门
    1.概念:JavaDataBaseConnectivityJava数据库连接,Java语言操作数据库 *JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商......
  • 544JDBC各个类详解connection和545JDBC各个类详解_Statement
    详解个个对象1.OriverManager驱动管理对象上一个博客有讲解2.获取数据库连接上一个博客有讲解3.connection:数据库连接对象功能:1.获取执行sql的对象statement......