首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

java事务处理有关问题

2011-12-31 
java事务处理问题try{ContextinitContextnewInitialContext()ContextenvContext(Context)initContext.l

java事务处理问题
try   {
                        Context   initContext   =   new   InitialContext();
                        Context   envContext   =   (Context)   initContext.lookup(
                                        "java:/comp/env ");
                        DataSource   ds   =   (DataSource)   envContext.lookup( "jdbc/sample_db ");
                        Connection   conn   =   ds.getConnection();
                        conn.setAutoCommit(false);;
                        String   sql   =   "delete   from   cateringmsg   where   id= "   +   id;
                        Statement   stmt   =   conn.createStatement();
                        stmt.executeUpdate(sql);
                        stmt.executeUpdate( "delete   from   agiomsg   where   sid= 'R "+id+ " ' ");
                        stmt.executeUpdate( "delete   from   slwordmsg   where   sid= 'R "+id+ " ' ");
                        stmt.executeUpdate( "delete   from   imgesmsg   where   sid= 'R "+id+ " ' ");
                        stmt.executeUpdate( "delete   from   pricemsg   where   sid= 'R "+id+ " ' ");
                        conn.commit();
                        conn.setAutoCommit(true);
                        stmt.close();
                        conn.close();
                        return   true;
                }   catch   (Exception   e)   {
                        conn.rollback();
                        System.out.println( "异常: "   +   e.toString());
                        return   false;
                }

catch中回滚不了事务 怎么解决?

[解决办法]
呵呵,
try {
……
Connection conn = ds.getConnection();
conn.setAutoCommit(false);;
String sql = "delete from cateringmsg where id= " + id;
Statement stmt = conn.createStatement();


stmt.executeUpdate(sql);
stmt.executeUpdate( "delete from agiomsg where sid= 'R "+id+ " ' ");
……
stmt.close();
conn.commit();
conn.close();
return true;
} catch (Exception e) {
conn.rollback();
System.out.println( "异常: " + e.toString());
return false;
}
finally{
try{conn.setAutoCommit(true);}
catch(Exception e1){};
}
[解决办法]
为什么要回滚呢?在finnally中关闭不可以吗?

热点排行