resultSet fechado

6 respostas
R
Amigos quando executo o codigo abaixo faz o update no banco ,tudo certo mas traz a mensagem que foi alterado com sucesso e uma de erro do SQLException dizendo que o ResultSet está fechado. como corrijo isso?
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.text.DateFormat"%>
<%@ page import="java.util.*"%> 
<%@ page import="java.sql.*" %>
<%@ page language="java" %>

<html>
<body>
<%
Connection con = null;
Statement st = null;
ResultSet res = null;

String user = request.getParameter("user");
String atual   = request.getParameter("atual");
String nova    = request.getParameter("nova");


try
{     Class.forName("org.postgresql.Driver");
     con = DriverManager.getConnection
     ("jdbc:postgresql://localhost:5432/port","root","1234");
     st = con.createStatement();

	ResultSet rs=st.executeQuery("SELECT usuario,senha FROM recepcao where usuario = '"+user+"'");

while(rs.next()){

String u = rs.getString(1);
String s = rs.getString(2);


if(s.equals(atual) && u.equals(user)){
	String update="UPDATE recepcao set senha ='"+nova+"' where usuario = '"+user+"'";

	st.executeUpdate(update);


%>
<body bgcolor="#FFFFFF" text="#000000">
<center>
  
<h3><p><p><p><p><p><div align="center">Altera&ccedil;&atilde;o de senha realizada com sucesso! </div>
	
	
<tr><td><p align="left"><font size="2"><a href="Gerencia.jsp">Voltar ao Menu</a></font></p></td></tr>
<%

}
else{
%>
<body bgcolor="#FFFFFF" text="#000000">
<center>
   
<h3><p><p><p><p><p><div align="center">Senha atual n&atilde;o confere,<br>volte a tela anterior e repita o processo! </div>
	
	
<tr><td><p align="left"><font size="2"><a href="Trocar_Senha.jsp">Voltar</a></font></p></td></tr>

<%
}
    con.close();
}}
catch (ClassNotFoundException cnfex)
{    out.println("Não carregou o Driver!");
}
catch (SQLException sqlex)
{    out.println("Erro "+sqlex);
}
%>
<body bgcolor="#FFFFFF" text="#000000">
<center>

</body>
</html>

6 Respostas

P

tem como postar as msgs ae?

S

Fala rusther, blz?

Geralmente, faço como o seu código (mas não em um JSP, mas isso depende da ocasião :))
Não entendi um negócio…
Na linha 12, você declarou:

ResultSet res = null;

E depois lá na linha 25, você fez:

ResultSet rs=st.executeQuery("SELECT usuario,senha FROM recepcao where usuario = '"+user+"'");

Tenta inicializar o Resulset rs que você criou com null, ou utilize o Resultset res com Statement (ainda não entendi porque dois :))
Se atualizou com sucesso a informação, feche-o (é só uma opinião).

Flw!

R

A mensagem que aparece é

Alteração de senha realizada com sucesso! Erro org.postgresql.util.PSQLException: Este ResultSet está fechado.

R

skalinichenko:
Fala rusther, blz?

Geralmente, faço como o seu código (mas não em um JSP, mas isso depende da ocasião :))
Não entendi um negócio…
Na linha 12, você declarou:

ResultSet res = null;

E depois lá na linha 25, você fez:

ResultSet rs=st.executeQuery("SELECT usuario,senha FROM recepcao where usuario = '"+user+"'");

Tenta inicializar o Resulset rs que você criou com null, ou utilize o Resultset res com Statement (ainda não entendi porque dois :))
Se atualizou com sucesso a informação, feche-o (é só uma opinião).

Flw!

Fiz o que voce falou mas embora fazendo a alteração no BD continua aparecendo a msg. A questão é : como fecho o resultSet?

R

Melhor dizendo como abrir o resultSet e não fechar como havia dito antes.

R

Amigos consegui resolver o problema.

if(s.equals(atual) && u.equals(user)){  
      st = con.createStatement();  //Repeti essa linha aqui dentro do if e parou de mostrar a msg.
     String update="UPDATE recepcao set senha ='"+nova+"' where usuario = '"+user+"'";  
   
     st.executeUpdate(update);

Abraço a todos. :stuck_out_tongue:

Criado 3 de abril de 2009
Ultima resposta 7 de abr. de 2009
Respostas 6
Participantes 3