• 30 jdbc事务设置


    什么是事务

    在plsql中,我们在执行增删改后,并不会马上写到表中,而是要手动点击一下提交按钮提交按钮(f10),如果不想提交刚才执行的代码,则可以点击回滚按钮(shift+f10)。

    提交和回滚在plsql中如图:

    jdbc事务的用途

    在后台项目中,如果没有设置自动提交,则默认为自动提交true。这会导致一个问题:数据的不安全。

    举个例子,在eclipse中我们写了jdbc连接后却没设置自动提交,代码为从A的账户中向B转1000元,程序在运行中,从A中扣款的代码执行成功了,但向B中添加1000元的代码却抛了异常。

    我们查询表发现,A的账户的确少了1000元,但B的账户却没有增加。

    jdbc设置事务

    第一步:在连接数据库对象创建后使用它调用setAutoCommit(false)方法传入false

    第二步:在执行SQL语句的try-catch代码块的try中,SQL语句的代码后添加:conn.commit();//conn为数据库连接对象。在没有SQL语句报异常的情况下正常执行

    第三步,在执行SQL语句的try-catch代码块的catch(SQLException e)中,添加:conn.rollback();它表示如果SQL执行语句报异常,则回滚,执行结果不写入表中。

    commit()方法就相当于提交按钮,而rollback()方法就相当于回滚按钮。

    完整如下例子:

    try {
    			//1.加载驱动类
    			Class.forName(driver);
    			//2.连接指定的数据库对象
    			conn = DriverManager.getConnection(url,username,password);
    			//3.设置自动提交设置为false
    			conn.setAutoCommit(false);
    			//3.获取sql命令对象
    			stmt = conn.createStatement();
    			//4.创建SQL命令
    			String sql = "insert into dept values(80,'吃鸡学院','北京')";
    			String sql2 = "select * from emp";
    			//5.执行SQL命令
    			int i = stmt.executeUpdate(sql2);//返回-1表示失败,返回其它数表示成功执行的条数。
    			System.out.println("执行结果:"+i);
    			conn.commit();
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}catch(SQLException e){
    			try {
    				conn.rollback();
    			} catch (SQLException e1) {
    				e1.printStackTrace();
    			}
    			e.printStackTrace();
    		}finally {
    			//6.关闭流
    			try {
    				if(stmt!=null) {
    					stmt.close();
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			try {
    				if(conn!=null) {
    					conn.close();
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    

      

  • 相关阅读:
    vue的组件名称问题
    vue引入js文件时报This dependency was not found:错误
    vue中input输入第一个字符时,光标会消失,需要再次点击才能输入
    vue中url带有#号键,去除方法
    vue路由机制导致的坑,坑,坑
    Python文件读取和数据处理
    python面向对象
    Python PIL库学习笔记
    汉诺塔的python 动画演示
    十九大报告词频分析
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/12312862.html
Copyright © 2020-2023  润新知