Seria uma boa prática criar apenas um try, com todos os recursos declarados nele, como mencionei abaixo.
Além do mais, o que dizem a respeito de trys encadeados dentro de outros?
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class TesteConexao {
public static void main(String[] args) {
ConnectionFactory connectionFactory = new ConnectionFactory();
try (Connection connection = connectionFactory.conexao();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM COUNTRY")) {
preparedStatement.execute();
try (ResultSet result = preparedStatement.getResultSet()) {
while (result.next()) {
System.out.println("Nome: " + result.getString("Name") + ", Continente: "
+ result.getString("Continent") + ", População: " + result.getString("Population"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}