JDBC ORACLE 简单的事务例子

这篇博客通过一个简单的示例展示了如何使用JDBC连接ORACLE数据库并处理事务,详细介绍了JDBC的五个事务级别,重点讲解了如何在实际操作中应用事务,防止脏读和前后读不一致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用JDBC连接ORACLE,初级的演示事务执行。

JDBC事务定义级别分为五类:

TRANSACTION_NONE:

TRANSACTION_READ_UNCOMMITED:

TRANSACTION_READ_COMMITED:  能够防止脏读,比如防止读到其他session没有提交的信息。

TRANSACTION_REPEATABLE_READ:能够防止前后读不一样,第一次读完,其他session执行DML操作,第二次读的就会和第二次不一样。可以加上select for update限制

TRANSACTION_SERIALIABLE:


下面用例子简单说明怎么处理事务:因为只是做事务,所以连接都写在主函数中了。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * transaction demo
 * @author oracle
 * @since 2012-08-14
 */
public class ConnectionUtils {

	public static void main(String [] args) throws SQLException{
		Connection connection = null;
		Statement statement = null;
		try{
			//get connection
			Class.forName("oracle.jdbc.driver.OracleDriver");
			connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.102:1521:ora1","sunlei","sunlei");
			
			connection.setAutoCommit(false);
			statement = connection.createStatement();
			statement.execute("insert into users values(3,'c')");
			statement.execute("insert into users values(2,2,3)");
			connection.commit();
			System.out.println("execute successs");
			connection.setAutoCommit(true);

		}catch(Exception e){
			System.out.println("exception rollback");
			connection.rollback();
		}finally{
			statement.close();
			connection.close();
		}
	}
}
首先得到jdbc连接,然后设置非自动提交(因为JDBC默认为自动提交事务,每条sql语句被看做一个事务,所以如果这条sql执行成功则系统自动调用commit,如果不成功则自动调用rollback),我们通过设置connection.setAutoCommit(false)来阻止自动提交,这样就能把多条sql拼成一个事务。在这个例子中,如果两条sql语句都执行成功则调用commit。我的users表中只有两个字段,id和username,所以第二条插入sql会有异常,第二条sql语句执行完肯定会跳到catch块,执行rollback操作,这样就把第一条sql回滚了,所以第二条出错,这两条sql全部不提交。最后在finally块中关闭connection




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值