0 0

Jdbc事务控制问题0

@Test
public void test01() throws SQLException {
Connection conn = connUtil.getDBConnection();
PreparedStatement ps = null, ps2 = null;
try {
// 手动控制事务
conn.setAutoCommit(false);

// 删除数据============1
ps2 = conn.prepareStatement("delete from t_zl_tss_account");
ps2.executeUpdate();

// 新增数据========2
ps = conn
.prepareStatement("insert into t_zl_tss_account(id,account,name,role_id,password,class_id) values(?,?,?,?,?,?)");
ps.setString(1, "9999999");
ps.setString(2, "999999");
ps.setString(3, "999999");
ps.setString(4, "1");
ps.setString(5, "999999");
ps.setString(6, "2");
ps.executeUpdate();

// 提交事务
conn.commit();
} catch (SQLException e) {
// 回滚事务
conn.rollback();
throw e;
} finally {
// 释放资源
connUtil.close(conn, ps, null);
connUtil.closeStatement(ps2);
}
}
1执行成功,2执行失败,1的结果也会反馈到数据库中,很不解,1,2是在同一个事务中,要么全部成功,要么全部失败,为什么2失败了,前面的操作没有回滚呢?
2014年6月08日 14:39

4个答案 按时间排序 按投票排序

0 0

你的conn.setAutoCommit(true);呢

2014年6月10日 11:25
0 0

楼主忘了事务的原子性了么,1和2是两条独立的事务,1成功执行后就会永久更改,不受2影响的

2014年6月09日 08:35
0 0

试试这种呢,你的问题可能是由于你的catch异常是SQLException ,但是第二种插入异常不是这个引起的,他捕捉不到,你可以换成Exception异常试试,让所有的都能捕捉到
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Statement stmt = null; 

try {
conn = DBUtil.getConnection();
stmt = conn.createStatement();
stmt.addBatch("delete from t_zl_tss_account");
        stmt.addBatch("insert into t_zl_tss_account(id,account,name,role_id,password,class_id) values('9999','9999','9999','9999','99','9')")
stmt.executeBatch(); 
conn.commit();
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException e1) {
throw new RuntimeException(e1.getMessage());
}
throw new RuntimeException(e.getMessage());
// e.printStackTrace();
} finally{
DBUtil.close(conn, ps, rs,stmt);
}

2014年6月09日 08:31
0 0

rollback代码是有了,我怀疑你是否走到Catch语句中

2014年6月09日 00:08

相关推荐

    JDBC事务控制--讲述如何控制JDBC事务

    ### JDBC事务控制详解 在数据库应用开发中,事务管理是一项重要的功能,它确保了一系列操作能够作为一个整体被正确地执行或回滚。Java Database Connectivity (JDBC) 是 Java 平台中用于连接数据库的标准 API,提供...

    JDBC事务管理的简单实现

    "JDBC事务管理的简单实现" 在JDBC编程中,事务管理是非常重要的一部分。为了实现数据一致性,需要在代码中显示的调用Connection方法的事务相关API来完成工作。下面是关于JDBC事务管理的简单实现的知识点。 一、...

    分层架构下的纯JDBC事务控制示例项目

    非常常用的JavaEE四层架构下的纯JDBC事务控制简单解决方案。Eclipse工程。详情参看:http://blog.csdn.net/qjyong/archive/2010/04/08/5464835.aspx

    JDBC事务管理.docx

    JDBC事务管理是数据库...总之,JDBC事务管理是确保数据库操作正确性和一致性的关键,通过理解和应用ACID原则以及适当的并发控制机制,开发人员可以有效地处理并发环境下的事务处理,保证系统的稳定性和数据的完整性。

    JDBC的事务初探

    **JDBC事务初探** Java Database Connectivity (JDBC) 是Java平台中用于访问数据库的标准API。在处理数据库操作时,事务管理是确保数据一致性、完整性和持久性的重要机制。本篇将深入探讨JDBC中的事务处理,以及...

    JDBC事务 JTA事务 传播特性 隔离级别

    **JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...

    spring JDBC事务管理

    标题中的“Spring JDBC事务管理”是指在Spring框架中如何利用JDBC进行数据库操作时的事务控制。Spring提供了多种方式来管理事务,使得开发者能够在复杂的业务逻辑中更好地控制数据的持久化过程,确保数据的一致性和...

    小码农的代码(二)----------SpringJDBC事务控制

    本篇文章我们将深入探讨Spring JDBC事务控制,这是Spring框架中处理数据持久化的一个关键特性。Spring JDBC提供了对数据库事务的高级封装,使得开发者能够方便、高效地管理事务,而无需过多关注底层实现细节。 首先...

    JDBC事务管理项目

    “JDBC事务管理项目”涵盖了如何在Java应用中利用JDBC进行事务控制,包括开启手动事务、提交、回滚以及设置事务隔离级别等。理解并掌握这些知识对于开发健壮的数据库应用至关重要,能够确保数据的完整性和一致性。

    JDBC事务处理机制探秘

    `UserTransaction`接口主要用于开始、提交和回滚事务,而`TransactionManager`接口则提供了更精细的事务控制,如挂起和恢复事务。 在EJB(Enterprise JavaBeans)环境中,SessionBean可以利用容器提供的事务管理...

    spring分别与jdbc和hibernate结合的事务控制--案例

    首先,我们来看Spring与JDBC的事务控制。Spring提供了一种声明式事务管理的方式,允许开发者通过在方法上添加@Transactional注解来开启事务。例如,在Service层的方法上添加此注解,Spring会在方法执行前后自动处理...

    jdbc事务及分页

    ### JDBC事务管理与分页策略详解 在Java开发中,JDBC(Java Database Connectivity)作为连接数据库的标准API,被广泛应用于数据操作。...在实际开发中,应根据具体需求和数据规模选择最合适的事务控制和分页方法。

    JavaBean中使用JDBC方式进行事务处理

    为了能够手动控制事务,需要调用`Connection.setAutoCommit(false)`来关闭这一模式。 3. **执行SQL语句**:接下来就可以执行一系列的SQL语句了。这些语句可以包括插入、更新或删除等操作。 4. **提交或回滚事务**...

    JDBC使用MySQL处理大数据+事务控制管理.txt

    ### JDBC使用MySQL处理大数据及事务控制管理 #### 一、批处理提高性能 在处理大量数据时,直接使用传统的逐条记录方式与数据库进行交互往往会导致性能低下。这是因为每次执行SQL语句时都需要与数据库建立连接、...

    JDBC事务管理及SavePoint示例Java开发Jav

    在实际开发中,了解并熟练运用JDBC事务管理和SavePoint,可以有效地提高程序的健壮性,减少因数据不一致引发的问题。这份PDF文档可能包含了更多关于这两个主题的深入解释、最佳实践以及实战案例,对于提升Java数据库...

    JdbcTemplate的事务控制.docx

    当使用`JdbcTemplate`结合Spring框架时,可以采用与原生JDBC事务控制类似的方法,但在Spring环境中进行管理。以下是一个使用Druid数据库连接池的示例代码: ```java @RequestMapping("/druidData1") public String ...

    JDBC设置事务自动提交

    在Java数据库连接(JDBC)中,事务管理...总之,通过JDBC的`setAutoCommit`方法,我们可以灵活地控制事务的自动提交行为,以适应不同的数据库操作需求。理解和正确使用事务管理对于编写健壮的数据库应用程序至关重要。

    Java中JDBC事务与JTA分布式事务总结与区别

    Java中的事务管理是确保数据一致性的重要机制,主要分为三种类型:JDBC事务、JTA(Java Transaction API)事务以及容器事务。本文将重点探讨JDBC事务和JTA分布式事务的区别和应用场景。 首先,JDBC事务是基于数据库...

    Oracle JDBC事务的优化.pdf

    Oracle JDBC事务的优化是数据库管理中的重要环节,其目的是提高数据库系统的性能和效率。Oracle数据库作为广泛使用的关系型数据库系统,其性能优化涉及到多个层面,包括共享内存管理、数据库段的优化、数据组织方式...

Global site tag (gtag.js) - Google Analytics