编程控制Oralce事务

在对数据库写编程时,事务控制是首先需要关注的问题。

 

第1点,弄清“自动提交”与“手工提交”方式下,事务提交的时机;

第2点,是确定采用自动事务提交方式,还是手动提交方式。

 

下面是对第1点的测试过程记录:

 

1.采用自动事务提交

	public void insert(){
			try{
				con =JdbcUtil.getConnection();
				for( int i=0; i<5; i++){
					System.out.println("-----"+i);
				stmt =con.createStatement();
				sql ="INSERT INTO TEMP_ZDP2 values('aa',"+i+",'33',null,null)";
				stmt.executeUpdate(sql);
				}		
			}catch( Exception e){
				e.printStackTrace();
			}finally{
				JdbcUtil.close( rs);
				JdbcUtil.close( stmt);
				JdbcUtil.close( con);
			}	
	}

stmt.executeUpdate(sql);处设置断点

执行中发现,在每次执行完stmt.executeUpdate(sql);后,数据库中就插入了记录

 

2.采用手工提交,显式使用commit来提交数据

			try{
				con =JdbcUtil.getConnection();
				con.setAutoCommit( false);
				for( int i=0; i<5; i++){
					System.out.println("-----"+i);
				stmt =con.createStatement();
				sql ="INSERT INTO TEMP_ZDP2 values('bb',"+i+",'33',null,null)";
				stmt.executeUpdate(sql);
				}		
				con.commit();
			}catch( Exception e){
				e.printStackTrace();
			}finally{
				JdbcUtil.close( rs);
				JdbcUtil.close( stmt);
				JdbcUtil.close( con);
			}	

 执行中发现,在每次执行完stmt.executeUpdate(sql);后,数据库中并没有插入记录,直到con.commit();后,库中才有数据生成。

 

3.采用手工提交,不使用commit

 

			try{
				con =JdbcUtil.getConnection();
				con.setAutoCommit( false);
				for( int i=0; i<5; i++){
					System.out.println("-----"+i);
				stmt =con.createStatement();
				sql ="INSERT INTO TEMP_ZDP2 values('bb',"+i+",'33',null,null)";
				stmt.executeUpdate(sql);
				}		
			}catch( Exception e){
				e.printStackTrace();
			}finally{
				JdbcUtil.close( rs);
				JdbcUtil.close( stmt);
				JdbcUtil.close( con);
			}	

  执行中发现,在每次执行完stmt.executeUpdate(sql);后,数据库中并没有插入记录,直到JdbcUtil.close( con);后,库中才有数据生成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值