-
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个答案 按时间排序 按投票排序
-
试试这种呢,你的问题可能是由于你的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
相关推荐
JDBC事务控制--讲述如何控制JDBC事务
非常常用的JavaEE四层架构下的纯JDBC事务控制简单解决方案。Eclipse工程。详情参看:http://blog.csdn.net/qjyong/archive/2010/04/08/5464835.aspx
JDBC使用MySQL处理大数据+事务控制管理.txt
本案例主要是分别实现Spring与jdbc和hibernate结合的事务控制,如果该案例有出入的地方,请给我留言,我们一起交流
JdbcTemplate是spring-jdbc提供的数据库核心操作类,那对JdbcTemplate进行事务控制呢?
NULL 博文链接:https://675990021.iteye.com/blog/2265732
文章目录事务一、事务的基本介绍1、概念2、操作3、操作实例4、MySQL数据库中默认自动提交二、事务的四大特征三、事务的隔离级别1、概念2、存在的问题3、隔离级别四、Jdbc事务控制1、概述2、控制事务的API:3、核心...
您要做的就是准备一个DataSource ,并将其传递给该库,以换取TxManager (以控制事务)和专用的托管DataSource您应使用该DataSource来获取连接。 ULTM与JDBC库一起使用。 将ULTM托管数据源传递给他们,您就完成了...
事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。 使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务...
二、JDBC事务操作 三、DBUtils事务操作 四、使用ThreadLocal绑定连接资源 五、事务的特性和隔离级别(概念性问题---面试)。 1.什么是事务 2.mysql的事务 1.QueryRunner 1.事务的特性ACID 2.并发访问问题----由...
JDBC通信原理 JDBC驱动类型 JDBC构成 JDBC程序5步走 滚动的结果集 可更新的结果集 SQL数据类型对应的Java类型 事务及批量处理 行集、连接池、LDAP
基本目标: 了解JDBC (Java Database Connectivity)相关概念 JDBC的四种类型的驱动 JDBC核心接口与类 ... JDBC 事务 进阶目标: 并发控制(Concurrency Control) 事务的隔离级别 批处理(Batch)
javaee-jdbc,jdbc 编程,事务控制和回滚
关系数据库与SQL语句 SQL语法 JDBC核心API 使用JDBC执行SQL语句 分析数据库的两种方式 事务 JDBC中的事务控制
Jdbc事务控制管理 常用数据库连接池 编写JDBC框架 客户信息管理系统 Servlet Filter 过滤器 HTTP 协议 文件上传和下载 Servlet事件监听器 JavaMail开发 (案例)Estore电子商城 软件国际化 Java基础加强 JQuery Ajax...
可以在spring中对整个项目的事务进行控制
在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在...
JDBC事务处理的作用对象为Connection, 因此要想控制操作在同一个事务里面, 我们必须要传递Connection, 确保使用的是同一个Connection.
演示只能使用Statement对象不能使用PreparedStatement的业务需求用户输入sql语句8.JDBC事务控制三段重要代码应用于数据库用户之间的转账9.悲观锁和乐观锁机制举栗子说明 1.JDBC Java Database Connectivity(java语言...
内容包括事务及其控制的基本概念,Oracle中的事务处理,以及JDBC,EJB,JTA事务管理内容的总结,最后还介绍了事务管理的技巧,是了解和学习JAVA事务处理不可多得的第一手资料!