-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");であり、このセーブポイントを使用してロールバックしています。
しかし、ロールバックは起こっていません。何か不足していますか?助けてください。