Pessoal, vejo muita gente fazendo isso:
static void AtualizaStatus(String[] rg, String st_xx, String dt_stxx, String co_campo_xx) throws Exception, SQLException, ClassNotFoundException
{
try
{
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(strQuery);
pstmt.executeUpdate();
}
catch(SQLException e)
{
conn.rollback();
e.printStackTrace();
System.out.println(query);
}
finally
{
conn.commit();
closeConnection(conn, pstmt, rs);
}
}
Mas assim, se der algum erro na transação, ele vai cair no catch, realizar o rollback e logo depois vai fazer o commit, o que não faz sentido e não tem lógica…
Por isso vejo que o ideal é isso:
static void AtualizaStatus(String[] rg, String st_xx, String dt_stxx, String co_campo_xx) throws Exception, SQLException, ClassNotFoundException
{
try
{
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(strQuery);
pstmt.executeUpdate();
conn.commit();
}
catch(SQLException e)
{
conn.rollback();
e.printStackTrace();
System.out.println(query);
}
finally
{
closeConnection(conn, pstmt, rs);
}
}
Com o commit() no try ele só é executado se for tudo certo, caso contrário faz o rollback e depois facha os objetos…
Se eu estiver errado, alguém me corrija.
[]´s!