jdbc,oracle使用事务提交处理

如果在SQL中需要同时执行多个SQL语句,而且其中任意一个SQL执行失败其他执行过的都撤销,就需要用到事务,jdbc,Oracle中使用事务是如下方式。


Connection conn=DriverManager.getConnection(url);
		try {
			//设置自动提交模式为否
			conn.setAutoCommit(false);
			String sql="update user set userId="+id;
			String sql2="update user set username='xxx' and userid="+id;
			conn.prepareStatement(sql).execute();
			conn.prepareStatement(sql2).execute();
			//执行到这儿说明执行成功,无任何错误,手动提交事务
			conn.commit();
			return true;
			//如果出错就执行异常
		} catch (Exception e) {
			//回滚事务,撤销在当前事务中进行的所有更改,
			conn.rollback();
			e.printStackTrace();
			return false;
		}
		finally{
			conn.close();
		}


 


这样只有所有SQL语句都执行成功后才能提交事务,改变结果,否则就撤销事务,更改失效。

文章来自:小小孩jdbc,oracle使用事务提交处理



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDBCJava数据库连接的缩写,它是一组用于操作数据库的Java API。JDBC提供了一种标准的方式来连接和操作各种关系型数据库,包括Oracle、MySQLSQL Server等。 JDBC可以通过调用存储过程来执行数据库操作,存储过程是一组预先编译好的SQL语句,可以在需要的时候被调用。在JDBC中,可以通过以下步骤来调用存储过程: 1. 创建CallableStatement对象,该对象用于调用存储过程。 2. 设置存储过程的参数,包括输入参数、输出参数和返回值。 3. 执行存储过程,并获取输出参数和返回值。 下面是一个调用存储过程的示例代码: ``` String sql = "{call my_proc(?, ?, ?)}"; CallableStatement stmt = conn.prepareCall(sql); stmt.setInt(1, 100); stmt.setString(2, "John"); stmt.registerOutParameter(3, Types.INTEGER); stmt.execute(); int result = stmt.getInt(3); ``` 除了调用存储过程,JDBC还可以处理数据库事务事务是一组相关的数据库操作,要么全部执行成功,要么全部回滚到之前的状态。在JDBC中,可以通过以下步骤来处理数据库事务: 1. 关闭自动提交模式,这样每个SQL语句就不会自动提交到数据库。 2. 开始事务,即调用Connection对象的beginTransction()方法。 3. 执行一组SQL语句。 4. 如果所有的SQL语句都执行成功,就调用Connection对象的commit()方法提交事务。 5. 如果任何一个SQL语句执行失败,就调用Connection对象的rollback()方法回滚事务。 下面是一个处理数据库事务的示例代码: ``` try { conn.setAutoCommit(false); stmt1.executeUpdate(); stmt2.executeUpdate(); conn.commit(); } catch (SQLException e) { conn.rollback(); } finally { conn.setAutoCommit(true); } ``` 在这个示例中,stmt1和stmt2是两个SQL语句,如果它们都执行成功,就提交事务。如果任何一个SQL语句执行失败,就回滚事务。最后,要记得将自动提交模式重新设置为true。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值