Duvida delete no postgree

5 respostas
K

Boa tarde

Estou iniciando em servlets e jsp e estou tentando executar um delete em um cadastro de usuario.
O que eu fiz de errado nesse código?
O programa funciona da seguinte forma:
Tenho um jsp onde eu passo o valor do id do usuario para um servlet.
O servlet recebe o id, localiza o usuario no banco de dados e chama o codigo abaixo para remover o usuario.
O problema e que me retorna esta mensagem: “org.postgresql.util.PSQLException: Um erro de E/S ocorreu ao enviar para o processo servidor”
Alguem poderia me explicar o que esta errado ?

Desde ja agradeço.

public void remover(Usuario usuario) throws Exception{
        PreparedStatement ps = null;
        Connection conn = null;
        
       if(usuario==null) throw new Exception("O valor passado não pode ser nulo");
        
        try{           
            String sql = "delete from usuario where id =?";
            conn = this.conn;
            ps = conn.prepareStatement(sql);
            ps.setInt(1,usuario.getId());
            ps.executeUpdate();
            
        }catch(SQLException sqle){
            throw new Exception("Erro ao excluir dados DAO: " + sqle);            
        }finally{
            AccessDb.closeConnection(conn,ps);
        }
    }

5 Respostas

leohunther

Faça:
sqle.printstacktrace();
na exceção.

E coloca a exceção completa pro pessoal ver.

O usuário é deletado assim mesmo?

Eu já fiz um programa onde deletava um usuário do banco e gerava a exceção do mesmo jeito.
Mas aí era usuário do banco.

K

O usuario não é excluido.

Segue a exceção.

org.postgresql.util.PSQLException: Um erro de E/S ocorreu ao enviar para o processo servidor.

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:218)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:304)

at com.fhssystem.dao.UsuarioDAO.remover(UsuarioDAO.java:120)

at com.fhssystem.servlet.svlUsuarioDel.doGet(svlUsuarioDel.java:21)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

at java.lang.Thread.run(Thread.java:619)

Caused by: java.io.IOException: Stream closed

at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:26)

at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:121)

at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)

at org.postgresql.core.PGStream.flush(PGStream.java:507)

at org.postgresql.core.v3.QueryExecutorImpl.sendSync(QueryExecutorImpl.java:676)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191)

… 22 more
leohunther

Damn it!!!
Tenta sem PreparedStatement só pra ver no que vai dar.
Ou tenta escrever o sql todo na String sql.
tipo:

"delete from usuario where id=1"

e executa pra ver o que vai dar.

berg.pb

Eu não vi aí vc criar a conexão.
No ínicio, vc diz q o objeto da conexão é ‘conn=null’

Dentro do try, vc coloca ‘conn=this.conn’. Mas se a conexão é nula, tudo é nulo.

Tenta conectar primeiro.

mrapha

Obrigado berg.pb!!! Sua solução resolveu o meu problema igual ao do moço aí emcima!!
Muito obrigado!!

Um grande abraço!!

Criado 23 de outubro de 2008
Ultima resposta 10 de jan. de 2009
Respostas 5
Participantes 4