zoukankan      html  css  js  c++  java
  • 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();
    			}
    		}
    

      

  • 相关阅读:
    PythonStudy——数据类型总结 Data type summary
    PythonStudy——可变与不可变 Variable and immutable
    PythonStudy——列表操作 List operatio
    PythonStudy——列表的常用操作 List of common operations
    PythonStudy——列表类型 List type
    PythonStudy——字符串扩展方法 String extension method
    PythonStudy——字符串重要方法 String important method
    AWT,Swing,RCP 开发
    JQuery插件机制
    最新知识网站
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/12312862.html
Copyright © 2011-2022 走看看