Boa Noite Galera!
Tenho uma classe que faz conexão com banco de dados e nessa mesma classe fiz um método para encerrar a conexão
public class ConnectionFactory
{
public static Connection getConnection()
{
try{
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost/biblioteca", "root", "123");
}catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null, "Driver não encontrado");
return null;
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Erro: " +e.getMessage());
return null;
}
}
public static void closeConnection(Connection conn, ResultSet rs, PreparedStatement ps)
{
try{
closeConnection(conn, rs, ps);
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Impossível fechar conexão");
}
}
public static void closeConnection(Connection conn, PreparedStatement ps)
{
try{
closeConnection(conn, ps);
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Impossível fechar conexão");
}
}
}
e estou usando esse método em um botão que grava:
btnGravar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
conn = ConnectionFactory.getConnection();
PreparedStatement ps = null;
try{
ps = conn.prepareStatement("INSERT INTO leitor(codLeitor, nomeLeitor, tipoLeitor)" +
" VALUES(?, ?, ?)");
ps.setString(1, txt1.getText());
ps.setString(2, txt2.getText());
ps.setString(3, (String) comboBox.getSelectedItem());
ps.executeUpdate();
ConnectionFactory.closeConnection(conn, ps);
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Erro! Dados não Gravados");
}finally{
txt1.setText("");
txt2.setText("");
comboBox.setSelectedIndex(0);
}
}
O programa grava normal, só que quando ele fecha a conexão com o “ConnectionFactory.closeConnection(conn,ps)” está dando um erro de Stack OverFlowError. Queria saber o pq do erro