重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

java代码能实现回滚么 java代码能实现回滚么为什么

JAVA编程的回滚机制是什么样的,最好能举个实例,有人会吗?

楼主这个回滚机制,针对的是java的事务管理吧! 事务处理之前必须进行取消自动提交,在默认情况下,所有的数据都是被默认提交上去的,就是说只要一执行更新就提交。

10年积累的网站设计制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有凤泉免费网站建设让你可以放心的选择与我们合作。

取消自动提交之后,如果最后程序的代码(批处理代码)没有出错,则可以进行人为的手工提交。最后如果程序出现了错误,则应该进行回滚。

瑭锦Tanjurd解释一组业务整体处理的行为叫一个事务。这一组的业务都能成功处理,我们就可以把这个事务提交来保存你已做的行为结果。但如果一组中有任何的差错出现的话,我们就认为这事务不成功,需要回滚来撤消之前的操作。举例:你去银行转账,转账我们有两步吧,从你账户中取出钱再往他账户中加钱。那这两步银行是必须要确保正确无误的进行的。要被看做成一个事务。其中任何一步出错就算是转账失败,但可能你这时是已经从你账户中扣了钱了,又没往他账户里加钱?怎么办算了?你不肯吧。所以银行会事务回滚,不保存你刚才的操作,即恢复到你没转账之前的状态

JAVA 里面怎写Oracle的数据库回滚

//举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定该删的都删了才行,否则就要回滚,下面是删除方法的例子:public boolean delete(int sID) {//成功删除会返回true;

 dbc = new DataBaseConnection();//根据你自己的方式创建数据库的连接

 Connection con = dbc.getConnection();//得到Connection

 try {

con.setAutoCommit(false);// 更改JDBC事务的默认提交方式,默认是true,是自动提交;

dbc.executeUpdate("delete from xiao where ID=" + sID);//删除

dbc.executeUpdate("delete from xiao_content where ID=" + sID);//删除

dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID);//删除

con.commit();//提交JDBC事务,如果没问题,这时才真正的删除了;

con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式,这是个好习惯;

dbc.close();//关闭连接

return true;//删除成功

 }

 catch (Exception exc) {

con.rollBack();//回滚JDBC事务,出现异常,为保证数据完整性,此次操作回滚,不删除;

exc.printStackTrace();//输出异常信息;

dbc.close();//关闭连接

return false;//删除失败

 }

}//顺便说一下,java中JDBC的事务管理,跟你用的是什么数据库没关系,用什么数据库都是这样;

java spring 有没有方法可以回滚事物

你好,在Spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会回滚的,如果没有自己捕获异常则事务会回滚,如下例

比如配置文件里有这么条记录:

bean id="dataSource" class="xxx"  

property name="xxx" value="xxx"/  

property name="xxx" value="xxx"/   

property name="defaultAutoCommit" value="true" /  

/bean

情况1:如果没有在程序中手动捕获异常

@Transactional(rollbackFor = { Exception.class })  

public void test() throws Exception {  

doDbStuff1();  

doDbStuff2();//假如这个操作数据库的方法会抛出异常,现在方法doDbStuff1()对数据库的操作   会回滚。  

}

情况2:如果在程序中自己捕获了异常

@Transactional(rollbackFor = { Exception.class })  

public void test() {  

try {  

doDbStuff1();  

doDbStuff2();//假如这个操作数据库的方法会抛出异常,现在方法doDbStuff1()对数据库的操作  不会回滚。  

} catch (Exception e) {  

e.printStackTrace();     

}  

}

关声明式事务的配置不懂你可以问我,希望可以帮到你

java中一个方法增加两个表,怎么回滚

在方法上添加事务,由事务统一管理,如图:

可以捕获异常,如果不对全部回滚。

java 事务方法调用非事务函数会回滚吗

你测试一下就晓得了, 会回滚, 我做了测试

@Override

@Transactional(rollbackFor = Exception.class)

public void test() {

TbLog log = new TbLog();

log.setId("3");

log.setOperationContent("事物回滚测试:有回滚注解");

tbLogService.create(log);

test1();

}

private void test1(){

for (int i = 1; i 3 ; i++) {

if (i==2){

throw new RestClientException("事物回滚测试");

}

TbLog log = new TbLog();

log.setId(String.valueOf(i));

log.setOperationContent("事物回滚测试:没注解");

tbLogService.create(log);

}

}

下面这种配置了不回滚的类型就不会回滚

@Override

@Transactional(rollbackFor = Exception.class,noRollbackFor = RestClientException.class)

public void test() {

TbLog log = new TbLog();

log.setId("3");

log.setOperationContent("事物回滚测试:有回滚注解");

tbLogService.create(log);

test1();

}

private void test1(){

for (int i = 1; i 3 ; i++) {

if (i==2){

throw new RestClientException("事物回滚测试");

}

TbLog log = new TbLog();

log.setId(String.valueOf(i));

log.setOperationContent("事物回滚测试:没注解");

tbLogService.create(log);

}

}

请教:如何在java程序中实现数据操作的“回滚”

--事务处理:

begin tran --开始处理数据时,开启事务

--下面是具体的处理语句

insert into 表 values(1)

if @@error0 --如果处理语句出错,回滚事务

begin

rollback tran

goto lbexit

end

update 表 set 字段=1

if @@error0 --如果处理语句出错,回滚事务

begin

rollback tran

goto lbexit

end

commit tran --所有执行成功,提交事务

lbexit:

JAVA的话,可以在连接对象上启用事务


名称栏目:java代码能实现回滚么 java代码能实现回滚么为什么
本文路径:http://cqcxhl.com/article/hiphdh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP