>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Como reabrir uma conexao


Rafael
estou testando uma conexao, porém ao tentar reutiliza-la ocorre o seguinte erro
"No operations allowed after connection closed. "

percebi que quando dou um close, a conexao fecha mas não deixa de ser nula, dando a impressao que existe mas esta fechada,

todo código de teste segue abaixo, o erro ocorre na linha do código (pstm2 = c.prepareStatement(SQL))

Obrigado


package br.com.rlsystem.DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class conexao {
static Connection conn = null;
static final String url = "jdbc:mysql://localhost/contas_pagar";
static final String user = "root", pass = "marcelo";

public static Connection getConexao() throws SQLException, ClassNotFoundException {
try {
if (conn == null) {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, pass);
}

} catch (Exception e) {
e.printStackTrace();
}

return conn;

}

public static void main(String[] args) {

try {
Connection c = conexao.getConexao();

String SQL = "select * from contaspagar";

PreparedStatement pstm = null;

pstm = c.prepareStatement(SQL);

ResultSet rs = pstm.executeQuery();
rs.close();
pstm.close();

c.close();

//** aqui reabro a conexao **

c = conexao.getConexao();
SQL = "select * from fornecedor";

PreparedStatement pstm2 = null;

pstm2 = c.prepareStatement(SQL); //********** o erro é nessa linha

ResultSet rs2 = pstm.executeQuery();
rs2.close();
pstm2.close();

c.close();

} catch (Exception e) {
e.printStackTrace();
}
}

}



1 Resposta


Errata
na linha:
ResultSet rs2 = pstm.executeQuery(); // não é pstm
o correto é:
ResultSet rs2 = pstm2.executeQuery();

obrigado