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事务控制--讲述如何控制JDBC事务

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

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

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

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

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

    本案例主要是分别实现Spring与jdbc和hibernate结合的事务控制,如果该案例有出入的地方,请给我留言,我们一起交流

    JdbcTemplate的事务控制.docx

    JdbcTemplate是spring-jdbc提供的数据库核心操作类,那对JdbcTemplate进行事务控制呢?

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

    NULL 博文链接:https://675990021.iteye.com/blog/2265732

    JDBC总结——事务

    文章目录事务一、事务的基本介绍1、概念2、操作3、操作实例4、MySQL数据库中默认自动提交二、事务的四大特征三、事务的隔离级别1、概念2、存在的问题3、隔离级别四、Jdbc事务控制1、概述2、控制事务的API:3、核心...

    ultm:JDBC超轻量级事务管理器

    您要做的就是准备一个DataSource ,并将其传递给该库,以换取TxManager (以控制事务)和专用的托管DataSource您应使用该DataSource来获取连接。 ULTM与JDBC库一起使用。 将ULTM托管数据源传递给他们,您就完成了...

    Java事务处理总结

    事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。 使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务...

    19-事务-源代码.rar

    二、JDBC事务操作 三、DBUtils事务操作 四、使用ThreadLocal绑定连接资源 五、事务的特性和隔离级别(概念性问题---面试)。 1.什么是事务 2.mysql的事务 1.QueryRunner 1.事务的特性ACID 2.并发访问问题----由...

    JDBC编程resultset游标控制

    JDBC通信原理 JDBC驱动类型 JDBC构成 JDBC程序5步走 滚动的结果集 可更新的结果集 SQL数据类型对应的Java类型 事务及批量处理 行集、连接池、LDAP

    JDBC Java Database Connectivity

    基本目标:  了解JDBC (Java Database Connectivity)相关概念  JDBC的四种类型的驱动  JDBC核心接口与类 ... JDBC 事务 进阶目标: 并发控制(Concurrency Control) 事务的隔离级别 批处理(Batch)

    javaee-jdbc

    javaee-jdbc,jdbc 编程,事务控制和回滚

    13.JDBC编程.ppt

    关系数据库与SQL语句 SQL语法 JDBC核心API 使用JDBC执行SQL语句 分析数据库的两种方式 事务 JDBC中的事务控制

    JAVAWeb全课程笔记( html版)

    Jdbc事务控制管理 常用数据库连接池 编写JDBC框架 客户信息管理系统 Servlet Filter 过滤器 HTTP 协议 文件上传和下载 Servlet事件监听器 JavaMail开发 (案例)Estore电子商城 软件国际化 Java基础加强 JQuery Ajax...

    Spring声明式事务配置管理方法

    可以在spring中对整个项目的事务进行控制

    Java中事务的实现

    在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在...

    java事务 - 传递Connection

    JDBC事务处理的作用对象为Connection, 因此要想控制操作在同一个事务里面, 我们必须要传递Connection, 确保使用的是同一个Connection.

    一篇搞定JDBC【Mysql基础】

    演示只能使用Statement对象不能使用PreparedStatement的业务需求用户输入sql语句8.JDBC事务控制三段重要代码应用于数据库用户之间的转账9.悲观锁和乐观锁机制举栗子说明 1.JDBC Java Database Connectivity(java语言...

    Java中各种事务管理技术的总结

    内容包括事务及其控制的基本概念,Oracle中的事务处理,以及JDBC,EJB,JTA事务管理内容的总结,最后还介绍了事务管理的技巧,是了解和学习JAVA事务处理不可多得的第一手资料!

Global site tag (gtag.js) - Google Analytics