:: SQLException :: ²¹RESOLVIDO¹²

17 respostas
C

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

Galera onde estou errando???

17 Respostas

T

posta o codigo ai…

C

É 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); }

C

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

C

Com e sem os:

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

Dá o mesmo erro!

E

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

C

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

J

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

E

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:

C

Novamente, valeu pela ajuda…

Massss continua a MERDA do erro!!

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

C

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

=((

C

“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

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!!!

J

mas e o seu ResultSet ???

T

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; }

J

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!

eltonk

ou

return null;

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

C

Vamos lá vou colar todos os codigos..

conectar.java
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;
    }  
    
}
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 é:
ERRO NA LISTA >> java.sql.SQLException: Operation not allowed after ResultSet closed

Fico no aguardo!!!

C

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!!

Criado 14 de maio de 2004
Ultima resposta 17 de mai. de 2004
Respostas 17
Participantes 5