一)
con.commit();是自己手动提交事务
con.setAutoCommit(true);是让JDBC自动提交事务。
con.rollback();是取消提交
如果你直接用过SQL在数据库软件中操作过数据就会明白了:
SQL语句如果不commit()的话,你看到的数据只是在缓存中被修改了并没有真正影响到储存在数据库中的数据,只有提交以后才真正改变了数据库中的数据。
二)
con.commit();是自己手动提交事务
con.setAutoCommit(true);是让JDBC自动提交事务。
con.rollback();是取消提交回滚数据
如果con.setAutoCommit(true),在对数据库操作后,数据已真实的更新到数据库里,不需要再用commit,此时调用con.rollback()也不起用了
如果设成false,那就是JDBC不自动提交,需要手动的使用commit或者rollback来进行提交或者回滚数据.
查询的时候是不需要进行事务控制的,只要在对数据库多个不同数据需要同步处理的时候才需要事务控制.比如银行取款,他必须有一个取款记录和帐户变化记录一起发生,单独发生一个是不行的,这时候就可以设成false,在两个操作都完成以后使用commit来一起提交.如果其中一个出现问题了,那就直接用rollback把两个都进行回滚,以保证数据一直性
摘自:
http://topic.csdn.net/t/20060928/09/5053329.html
分享到:
相关推荐
con.setAutoCommit(false); st=con.createStatement(); String sql="insert into dept(name) values('gaoyajun')"; int i=st.executeUpdate(sql); con.commit(); System.out.println(i); }catch...
con.setAutoCommit(false); // 设置连接不自动提交,即用该连接进行的操作都不更新到数据库 sm = con.createStatement(); // 创建Statement对象 //依次执行传入的SQL语句 for (int i = 0; i < sqls.length;...
在这个示例中,首先通过`con.setAutoCommit(false)`关闭了连接的自动提交模式,这样所有后续的数据库操作都不会立即生效,而是等待事务结束时手动提交。如果执行过程中发生异常,可以通过`con.rollback()`来撤销所有...
con.setAutoCommit(false); Statement st = con.createStatement(); // 插入空CLOB st.executeUpdate("insert into TESTCLOB(ID, NAME, CLOBATTR) values (1, 'thename', empty_clob())"); // 查询并更新...
con.setAutoCommit(false); // 创建 Statement Statement st = con.createStatement(); // 插入空 CLOB st.executeUpdate("INSERT INTO TESTCLOB (ID, NAME, CLOBATTR) VALUES (1, 'thename', EMPTY_CLOB())"); /...
con.setAutoCommit(false); Statement st = con.createStatement(); ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1"); if (rs.next()) { java.sql.Clob clob = rs.getClob("CLOBATTR...
con.setAutoCommit(false); dbc.executeUpdate("delete from bylaw where ID=" + sID); dbc.executeUpdate("delete from bylaw_content where ID=" + sID); dbc.executeUpdate("delete from bylaw_affix where ...
con.setAutoCommit(false); // 准备执行存储过程 PreparedStatement pstmt = null; String sql = "{call p_insert(?,?)}"; pstmt = con.prepareCall(sql); // 设置参数值 pstmt.setInt(1, 1); pstmt....
con.setAutoCommit(false); // 关闭JDBC默认的自动提交模式 dbc.executeUpdate("delete from bylaw where ID=" + sID); dbc.executeUpdate("delete from bylaw_content where ID=" + sID); dbc.executeUpdate(...
为了避免这些问题,我们可以将`con.setAutoCommit(false)`,这样可以手动控制事务的提交。在执行多条SQL语句后,使用`con.commit()`一次性提交所有操作。这样做有以下好处: 1. **事务管理**:当设置`autoCommit`为...
con.setAutoCommit(flag); } 其中,con是数据库连接对象,flag是一个布尔值,true表示自动提交,false表示手动提交。 二、手动提交事务 手动提交事务是指在执行多个SQL语句后,才提交事务。这种方式可以确保多个...
con.setAutoCommit(false); // 关闭自动提交 pst = con.prepareStatement(sql); Vector[]> v = readExcel(filePath); for (Cell[] cells : v) { int j = 0; pst.setString(++j, cells[j].getContents()); // ...
例如,使用con.setAutoCommit(false)方法可以关闭自动提交,通过con.commit()方法可以提交事务,通过con.rollback()方法可以回滚事务。 在银行转账和货物进出库等领域,事务操作需要满足以下要求: 1. 转账业务:...
con.setAutoCommit(false); stmt.executeUpdate("insert into tb_file values('aaa.gif', empty_blob())"); ResultSet rs = stmt.executeQuery("select detail from tb_file where name='aaa.gif' for update"); if ...
con.setAutoCommit(false); // 关闭自动提交 pstmt = con.prepareStatement(selectSql); pstmt.setString(1, src.getAccount()); rs = pstmt.executeQuery(); if (!rs.next()) { throw new SQLException("源...
con.setAutoCommit(false); // 关闭自动提交 PreparedStatement pstmt1 = con.prepareStatement(sql1); pstmt1.executeUpdate(); PreparedStatement pstmt2 = con.prepareStatement(sql2); pstmt2....
con.setAutoCommit(false); try { // 事务中的操作 con.commit(); } catch (Exception e) { con.rollback(); // 处理异常 } ``` 2. **JTA(Java Transaction API)事务**:适用于分布式事务处理,可以在多个...