回滚后无法重用jdbc连接

时间:2019-08-16 12:42:16

标签: java oracle jdbc

我在将一些数据插入oracle表的应用程序中使用了一个简单的JDBC程序。它可以在积极的情况下正常工作,但不能在消极的情况下工作,并且在发生异常时我禁用了约束问题。

下面是我的代码片段,这些代码从主类中调用。

try{
    Connection conn=getConnection();
    conn.setAutoCommit(false);
    loadDataContent(conn, disabledConstraints);
    conn.commit();

}catch(Exception e){
    if(conn !=null){
        conn.rollback();
    }

    throw e;
}finally{
    DatabaseUtil.closeDatabaseConnections(conn);

} 

发生任何异常时,我在下面的代码中遇到了问题。

private static void loadDataContent(Connection conn,
            Map<String, String> disabledConstraints) throws SQLException,Exception {
    try{
        disabledConstraints = DataAccess.disableAllConstraints(conn);
        DataAccess.insertDataToTables(conn);
        DataAccess.enableConstraints(conn, disabledConstraints);// getting Exception
    }catch(Exception e){
        if(conn !=null){
            conn.rollback();
            try{
                if(disabledConstraints != null)
                    DataAccess.enableConstraints(conn, disabledConstraints);//getting same Exception in this line after rollback 
            }catch(Exception exception){
                log.fatal("Exception occured while enabling constraints: " + disabledConstraints);
            }
        }
        throw e;
    }
}

在异常情况下,我无法调用DataAccess.enableConstraints,并且它已禁用所有约束。回滚后写在catch块中的代码不起作用。为什么下面的代码给出与回滚之前得到它相同的异常。

if(disabledConstraints != null)
   DataAccess.enableConstraints(conn, disabledConstraints);//getting same Exception in this line after rollback

我得到的异常是 ORA-02298:无法验证-未找到父键

我需要关于我做错了什么的建议。

0 个答案:

没有答案