After executing a prepareStatement
my connection to the database is closed and it does not let me continue executing sentences.
I throw the exception: java.sql.SQLNonTransientConnectionException: No operations allowed after connection closed.
Connection Class
public class ConexionMySql {
private static Connection objConexion = null;
private LoggerRegistros log4j = new LoggerRegistros(this.getClass());
private ConexionMySql() {
final String user = "root";
final String pass = "";
final String server = "jdbc:mysql://localhost/";
final String DB = "db_cfprojets";
final String DriverMySQL = "com.mysql.cj.jdbc.Driver";
final String zonaHoraria = "?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
try {
Class.forName(DriverMySQL);
objConexion = DriverManager.getConnection(server + DB + zonaHoraria, user, pass);
} catch (ClassNotFoundException | SQLException ex) {
log4j.setFatal(ex.getMessage(), ex.fillInStackTrace());
}
}
public static Connection getConnection() {
if (objConexion == null) {
new ConexionMySql();
}
return objConexion;
}}
Method to insert
public void insertClient(Cliente cliente) throws Exception {
sql = "INSERT INTO tb_cliente VALUES(?,?,?,?,?,?,?,?,?,?,?)";
try {
ps = con.prepareStatement(sql);
ps.setString(1, cliente.getRfc());
ps.setString(2, cliente.getNombre());
ps.setString(3, cliente.getDireccion().getCalle());
ps.setString(4, cliente.getDireccion().getNum_calle());
ps.setString(5, cliente.getDireccion().getColonia());
ps.setInt(6, cliente.getDireccion().getCp());
ps.setString(7, cliente.getDireccion().getMucipio());
ps.setString(8, cliente.getDireccion().getEstado());
ps.setString(9, cliente.getDireccion().getPais());
ps.setString(10, cliente.getContacto().getNum_movil());
ps.setString(11, cliente.getContacto().getEmail());
int a = ps.executeUpdate();
if (a == 0) {
loggger.setInformacion("No se actualizo ninguna fila");
}
} catch (SQLException ex) {
loggger.setError(ex.getMessage(), ex.fillInStackTrace());
JOptionPane.showMessageDialog(null, ex.fillInStackTrace(), ex.getMessage(), JOptionPane.ERROR_MESSAGE);
} finally {
if (con != null) {
con.close();
}
if (ps != null) {
ps.close();
}
}
}