Итак, я пытаюсь учиться.Я прошу прощения за slopinnes.Этот код обрабатывает транзакции, поэтому autocommit должен иметь значение false, но он генерирует необработанное SQLException для conn.rollback (), и я не понимаю, почему, если он уже находится внутри catch (исключение) ... Должен ли я перенести все на другойпопробовать-поймать?
try {
conn.setAutoCommit(false);
String sql="SELECT l.toy_id FROM LETTER l WHERE toy_id=?";
PreparedStatement selectStatement = conn.prepareStatement(sql);
String sqlD="DELETE FROM TOY WHERE toy_id=?";
PreparedStatement deleteStatement = conn.prepareStatement(sqlD);
String sqlU="INSERT INTO TOY (toy_id, toy_name, price,toy_type, manufacturer) VALUES (?,?,?,?,?)";
PreparedStatement UpdateStatement = conn.prepareStatement(sqlU);
// TODO Update or delete Toy for every row in file
for (List<String> row : fileContents) {//!!!!!!!no borrar!!!
int toy_id=getToyId(row);
//should another try go here??
selectStatement.setInt(1, toy_id);
ResultSet rs = selectStatement.executeQuery(sql);
if (!rs.first()) {//HERE WE DELETE
deleteStatement.setInt(1, toy_id);
deleteStatement.executeUpdate();
}else {
while (rs.next()) {//HERE WE UPDATE
UpdateStatement.setInt(1, toy_id);
UpdateStatement.executeUpdate();
}
}
rs.close();
}
conn.commit();
}
catch (SQLException e){
System.out.println("ERRRROOOOOOORRRRR");
conn.rollback();
}