2016-03-30 6 views
-5

条件に基づいてストアドプロシージャをロールバックする必要があります。Javaでロールバックされたストアドプロシージャ

まず私は、ストアドプロシージャを呼び出すと、後の状態をチェックし、条件が失敗した場合、ロールバックする必要があります。以下は、私が試したコードです。上記のコードで

public static void main(String[] args) { 
    Student student=new Student(); 

    student.setName("AAAA"); 
    student.setAge("20"); 
    student.setDob("14/08/1988"); 
    student.setPhone("98841"); 
    student.setSslc("1111"); 
    student.setHsc("222"); 
    student.setCollege("333"); 
    System.out.println(student); 
    try { 
     Connection conn=ConnectDB.getConnection(); 
     conn.setAutoCommit(false); 

     CallableStatement callableStatement = null; 
     String proc = "{call STUDENT_OP(?,?,?,?,?,?,?,?)}"; 
     callableStatement = conn.prepareCall(proc); 
     Savepoint savepoint1 = conn.setSavepoint("ROLLBACK_SP"); 

     int age=Integer.parseInt(student.getAge()); 

     callableStatement.setString(1, student.getName()); 
     callableStatement.setInt(2, age); 
     callableStatement.setString(3, student.getDob()); 
     callableStatement.setString(4, student.getPhone()); 
     callableStatement.setString(5, student.getSslc()); 
     callableStatement.setString(6, student.getHsc()); 
     callableStatement.setString(7, student.getCollege()); 
     callableStatement.registerOutParameter(8, java.sql.Types.NUMERIC); 

     callableStatement.executeUpdate(); 

     int returnCode=callableStatement.getInt(8); 
     getStudents(); 

     if(SOME CONDITION){ 
      conn.rollback(savepoint1); 
     } 
     getStudents(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 

getStudents()方法は学生テーブル内の名前のリストを印刷します。ロールバックする前とロールバックする前に、このgetStudents()メソッドを実行していますか?私はSavepointとして設定しています。Savepoint savepoint1 = conn.setSavepoint( "ROLLBACK_SP");であり、このセーブポイントを使用してロールバックしています。

しかし、ロールバックは起こっていません。何か不足していますか?助けてください。

答えて

0

あなたは、UI-ブートストラップからmodalコンポーネントを使用することができます。

関連する問題