java里,怎么写事务控制
我一个方法里,执行了文件操作、数据库操作等....如果用Connection手动提交的话,就只对数据库操作生效,对文件操作不管用我想对这个方法进行事务控制,要怎么写?(没...
我一个方法里,执行了文件操作、数据库操作等....
如果用Connection手动提交的话,就只对数据库操作生效,对文件操作不管用
我想对这个方法进行事务控制,要怎么写?
(没使用spring、hibernate)
我是这个方法里,包含"文件操作、数据库操作",两种操作,要事务控制,就控制整个方法,两种操作都要回滚,就是不知道怎么实现
------------------
2楼说的是针对数据库操作,还有文件操作呢? 展开
如果用Connection手动提交的话,就只对数据库操作生效,对文件操作不管用
我想对这个方法进行事务控制,要怎么写?
(没使用spring、hibernate)
我是这个方法里,包含"文件操作、数据库操作",两种操作,要事务控制,就控制整个方法,两种操作都要回滚,就是不知道怎么实现
------------------
2楼说的是针对数据库操作,还有文件操作呢? 展开
2015-12-20 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
Java中为了控制事务的一致性,会使用插入回滚点、callback方法,保证数据不被篡改,示例如下:
public String delete(String id) {
String ID = id;
db = new getConnection();
Connection con = db.getConnection();
try {
con.setAutoCommit(false);
db.executeUpdate("delete from helloworld where ID=" + ID); //更新操作1
db.executeUpdate("delete from helloworld _book where ID=" + ID); //更新操作2
db.executeUpdate("delete from helloworld_user where ID=" + ID); //更新操作3
con.commit();//提交JDBC事务
con.setAutoCommit(true);
db.close();
return “success”;
}
catch (Exception e) {
con.rollBack();//回滚JDBC事务
e.printStackTrace();
db.close();
return “fail”;
}
}
public String delete(String id) {
String ID = id;
db = new getConnection();
Connection con = db.getConnection();
try {
con.setAutoCommit(false);
db.executeUpdate("delete from helloworld where ID=" + ID); //更新操作1
db.executeUpdate("delete from helloworld _book where ID=" + ID); //更新操作2
db.executeUpdate("delete from helloworld_user where ID=" + ID); //更新操作3
con.commit();//提交JDBC事务
con.setAutoCommit(true);
db.close();
return “success”;
}
catch (Exception e) {
con.rollBack();//回滚JDBC事务
e.printStackTrace();
db.close();
return “fail”;
}
}
2010-03-05
展开全部
简单的~在连接了数据库之后,将自动commit的参数改为false,conn.setAutoCommit( false );
并在执行了sql语句之后调用conn.commit();
就可以了
并在执行了sql语句之后调用conn.commit();
就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
lz可能想在上传,修改,删除文件时,同时操作数据库记录吧?
更正一下,只有对数据库的一组操作才叫事物,操作文件是业务逻辑,不能写在一起。你可以先完成对文件的操作,再根据文件的操作情况(操作成功与否)操作数据库,一个在业务层,一个在持久层。
更正一下,只有对数据库的一组操作才叫事物,操作文件是业务逻辑,不能写在一起。你可以先完成对文件的操作,再根据文件的操作情况(操作成功与否)操作数据库,一个在业务层,一个在持久层。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对文件操作的事物控制?
那就得从新写了~
其实就是写个指令的缓冲
比如Hibernate的Session,就是把SQL语句(或者HQL)先存起来,然后commit的时候再一次执行(当然其中没那么简单,也使用了cglib来同步实体对象)
你写的话,其实也是写个缓冲而且,调用的方法表面是
delete()(这个方法需要你自己实现的,而不是File类的delete())
其实内部只是记下个指令而已
这仅仅是思路,具体还要看你的
那就得从新写了~
其实就是写个指令的缓冲
比如Hibernate的Session,就是把SQL语句(或者HQL)先存起来,然后commit的时候再一次执行(当然其中没那么简单,也使用了cglib来同步实体对象)
你写的话,其实也是写个缓冲而且,调用的方法表面是
delete()(这个方法需要你自己实现的,而不是File类的delete())
其实内部只是记下个指令而已
这仅仅是思路,具体还要看你的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询