:: SQLException :: ²¹RESOLVIDO¹²

java.sql.SQLException: Operation not allowed after ResultSet closed

Galera onde estou errando???

posta o codigo ai…

É pra já

//QUANDO CLICAR NO LISTAR try { lista_de_transportadores.add("teste"); ResultSet nomes; conectar banco = new conectar(); nomes = banco.conectar("select nome from transportadora;"); lista_de_transportadores.clear(); while(nomes.next()) { lista_de_transportadores.add(nomes.getString("nome")); } } catch(Exception E) { System.out.println("ERRO NA LISTA >> " + E); }

E o conectar é:

public ResultSet conectar (String linha_sql) { try { // stmt.executeUpdate(linha_sql); resposta = stmt.executeQuery(linha_sql); stmt.close(); conn.close(); System.out.println (">>ComandoSQL..oK"); } catch (SQLException E) { System.out.println("ERRO AO EXECUTAR O COMANDO DE SQL NO BANCO"); System.out.println("ERRO Consulta -->" + E.getMessage()); } return resposta; }//conectar

Com e sem os:

stmt.close();
conn.close();

Dá o mesmo erro!

ow ceara.

blz !!

faz um teste assim:

public ResultSet conectar (String linha_sql) 
    { 
        try 
        { 
            resposta = stmt.executeQuery(linha_sql); 
            if (resposta == null)
              System.out.println (">>ComandoSQL..nao trouxe resultado"); 
            else
              System.out.println (">>ComandoSQL..oK"); 
        } 
        catch (SQLException E) 
        { 
            System.out.println("ERRO AO EXECUTAR O COMANDO DE SQL NO BANCO"); 
            System.out.println("ERRO Consulta -->" + E.getMessage()); 
        } 
        return resposta; 
    }

tente so para fazer um teste.
posta o resultado.

flow

Pow cara, primeiro valeu pela ajuda…

MASSSSSSSSSSS continua dando erro…

segue

>>ComandoSQL..oK ERRO NA LISTA >> java.sql.SQLException: Operation not allowed after ResultSet closed

isso quer dizer que vc esta tentando acessar o seu ResultSet depois de ter dado um close() nele…

posta ai o código completo dessa implementaçao ai!

cya

bom

vamos para mais um teste

try 
{ 
   lista_de_transportadores.add("teste"); 
   ResultSet nomes; 
   conectar banco = new conectar(); 
   nomes = banco.conectar("select nome from transportadora;"); 
   lista_de_transportadores.clear(); 
   if (nomes != null) 
   {
      while(nomes.next()) 
      { 
         lista_de_transportadores.add(nomes.getString("nome")); 
      } 
   }
   else
   {
       System.out.println("problema com o retorno da funcao conectar");
   }
} 
catch(Exception E) 
{ 
    System.out.println("ERRO NA LISTA >> " + E); 
}

posta o retorno

vamos, assim por parte :slight_smile:

Novamente, valeu pela ajuda…

Massss continua a MERDA do erro!!

>>ComandoSQL..oK ERRO NA LISTA >> java.sql.SQLException: Operation not allowed after ResultSet closed

Em nenhum desses trexos de código que eu coloquei entrou no if de suposto erro!!!

=((

[quote=“jujo”]isso quer dizer que vc esta tentando acessar o seu ResultSet depois de ter dado um close() nele…
posta ai o código completo dessa implementaçao ai!
cya[/quote]

Jujo: cara na parte de conexão eu colocando os

stmt.close();
conn.close();

ou não, deu o mesmo erro!!!

=((

Valeu pela ajuda…

Os trechos da implementação tão aí em cima!!!

mas e o seu ResultSet ???

O ceara tenta fazer assim:

public ResultSet conectar (String linha_sql) { try { ResultSet resposta = stmt.executeQuery(linha_sql); return resposta; } catch (SQLException E) { System.out.println("ERRO AO EXECUTAR O COMANDO DE SQL NO BANCO"); System.out.println("ERRO Consulta -->" + E.getMessage()); } return resposta; }

ou ton_sp,

nao vai rolar assim porque o resposta está como uma variável local do try, e vc nao vai conseguir acessa-lo de fora.

declara entao o ResultSet resultado antes do Try!

cya!

ou

return null;

Ceara, onde e de que tipo vc declara a tua variável “resposta” ?

Vamos lá vou colar todos os codigos…

conectar.java

[code]import java.sql.*;

public class conectar
{
private ResultSet resposta;
private Statement stmt;
private Connection conn;

public conectar()
{
    try
    {
        Class.forName("org.gjt.mm.mysql.Driver").newInstance();
        System.out.println (">>Driver......oK");
        String serverName = "localhost";
        String mydatabase = "azai";
        String username = "root";
        String password = "";
        String url = "jdbc:mysql://" + serverName + "/" + mydatabase; 
        conn = DriverManager.getConnection(url, username, password);
        System.out.println (">>Conexão.....oK");
    }
    catch (Exception E)
    {
        System.out.println("Erro na conexão....>>"+ E);
    }
    try
    {   
        stmt = conn.createStatement();
        System.out.println (">>SQL pronto..oK");
    }
    catch(SQLException E)
    {
            System.out.println("Erro na criação do comando....>>"+ E);
    }        
}//MAIN
   

public ResultSet conectar (String linha_sql)
{
    try
    {
        resposta = stmt.executeQuery(linha_sql);
        if (resposta == null) 
          System.out.println (">>ComandoSQL..nao trouxe resultado"); 
        else 
          System.out.println (">>ComandoSQL..oK"); 
    }
    catch (SQLException E)
    {
        System.out.println("ERRO AO EXECUTAR O COMANDO DE SQL NO BANCO"); 
        System.out.println("ERRO Consulta -->" + E.getMessage()); 
    }
    return resposta;
}  

}[/code]
Esse file é só para connectar no banco e fazer a consulta no SQL

no arquivo que eu chamo o banco e consulta tem:

private void botao_listarMouseReleased(java.awt.event.MouseEvent evt) { //QUANDO CLICAR NO LISTAR\\ try { lista_de_despachantes.clear(); lista_de_despachantes.add("teste"); ResultSet nomes; conectar banco = new conectar(); nomes = banco.conectar("select nome from transportadora;"); while(nomes.next()) { lista_de_despachantes.add(nomes.getString("nome")); } } catch(Exception E) { System.out.println("ERRO NA LISTA >> " + E); } }

O erro que está dando é:

Fico no aguardo!!!

POOOUUTZZZZ

Galera, achei o erro aqui!!

LAMENTAVEL… e não sei como estava acontecendo isso!!

Mas estou usando NetBeans…

Aí fui “passar” o debug e descobri que ele estava usando o conectar.java de outro diretório, infelizmente tinha o mesmo nome de arquivo, e realmente lah dentro tinha os:

] stmt.close(); conn.close();

Agradeço de mais a ajuda de todos aqui!!!

Abraços
Ceará --> Seguindo com o projeto!!