JDBC中事务处理应用
解释事务的概念; 事务控制是sql语句中的核心之一;事务控制的作用就是保证数据的正常执行与异常之后可以恢复
事务常用命令:
Commit提交
rollback;回滚
savepoint;保存点
例如在实际开发中我们会处理很多的数据,但是一旦提交数据将无法修改,这时会出现灾难性的事件;因此事务控制就显得格外的重要与特别
a),rollback还原为厨师数据,将sal改成1200
update emp set sal=1200 where ename='SMITH
此时我发现不想改sal的数,如果没commit还可以还原
rollback;
rollback是每次都还原原始数据800
b),savepoint保存点和commit的使用
1 ,将sal改为800
update emp set sal=800 where ename='SMITH
2 ,将sal改为500 并设置savepoint a1
update emp set sal=800 where ename='SMITH
3,将sal改为1500 并设置savepoint a2
update emp set sal=800 where ename='SMITH
4,还原a2
rollback to a2;
通过设置savepoint可以还原到我们需要的数据地点
事物;是为了保证对数据操作的一致性和统一性
commit;提交事物,将数据更新到数据库中去,一旦事物被提交就无法还原
rollback 回滚 还原到上一次提交事物时的状态
savepoint a1 创建一个还原点,a1是还原点的名称,rollback to a1;还原到a1的保存点
一旦提交事物所有的保存点都失效
在执行退出命令的时候会自动的先提交事物
jdbc中一旦执行数据编译自动提交
JDBC中事务的应用;保证数据的一致性
如下代码;没有加入事务的概念,数据会出错并且不能回复
package 数据库操作; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * * @author Administrator */ public class OracleDemo { public static void main(String[] args) { Connection conn; try { //1.加载数据驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //2.定义字符串 String url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; //3,链接数据库 conn = DriverManager.getConnection(url, "scott", "tiger"); //4,创建数据操作对象 Statement stm = conn.createStatement(); //5,更新需要的数据 String sql = "Update emp set sal = 800 where ename ='SMITH'"; //两行错的 String str = "abds"; int len = Integer.parseInt(str); int num =stm.executeUpdate(sql); System.out.println(len); System.out.println("有"+num+"行受影响"); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
//编译出错,但是sql语句已经执行,commit已经提交
怎么设置出错时commit不自动的提交
package 数据库操作; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * java连接JDBC的事物控制联系 * @author Administrator *roolback ,commit,savepoint 事物控制 */ public class OracleDemo { public static void main(String[] args) { Connection conn; try { //1.加载数据驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //2.定义字符串 String url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; //3,链接数据库 conn = DriverManager.getConnection(url, "scott", "tiger"); //4,创建数据操作对象 Statement stm = conn.createStatement(); try{ //设置禁止自动提交 conn.setAutoCommit(false); //5,更新需要的数据 String sql = "Update emp set sal = 800 where ename ='SMITH'"; String str = "abds"; int len = Integer.parseInt(str); int num =stm.executeUpdate(sql); System.out.println(len); System.out.println("有"+num+"行受影响"); //执行完毕后再提交 conn.commit(); } catch (Exception e) { conn.rollback(); System.out.println("执行了回滚的操作..........."); e.printStackTrace(); } }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
//输出结果;一行受影响
上一篇: JDBC连接数据库
下一篇: JAVA Zip压缩文件