Javax.servlet.ServletException: java.sql.SQLException: After end of result set

2 respostas
mictexx

Boa Tarde,

estou executando essa Action, e obtenho esse erro na validação do usuario:

javax.servlet.ServletException: java.sql.SQLException: After end of result set

Action

package strutsdemo.action;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import strutsdemo.form.LoginFormNew;
import strutsdemo.bean.AdminUsers;

public class LoginActionNew extends Action {


public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {

return this.execute(mapping,form,request,response);

}

public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {

boolean validLogin=false;

/* Leitura do path que está mapeado no struts-config.xml
* na action "login"
* <action path="/login"
* ...
* ><forward name="login" path="/jsp/principal.jsp"/>
*/

ActionForward actionForward = mapping.findForward("login");
ActionErrors errors = new ActionErrors();

LoginFormNew loginForm=(LoginFormNew)form;
String userName = null;
String password = null;

if (loginForm != null){

userName = loginForm.getUserName();
password = loginForm.getPassword();

try {
AdminUsers adminusers = new AdminUsers();
validLogin = adminusers.autenticaLogin(userName, password);
}
catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException(e);

}

if (validLogin){

/* Leitura do path que está mapeado no struts-config.xml
* na action "login"
* <action path="/login"
* ...
* ><forward name="usuarioOK" path="/jsp/principal.jsp"/>
*/

actionForward = mapping.findForward("usuarioOK");
request.getSession(true).setAttribute("USERNAME",userName);

}

else { errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.login.authenticate"));

}

if (!errors.isEmpty()) {

saveErrors(request, errors);

}


}

return (actionForward);

}

}

Bean

//LOGIN 2

public boolean autenticaLogin(String username, String password) throws SQLException{

Connection conn = null; 
Statement  stmt = null; 
ResultSet  rs   = null; 
String sql = "SELECT * FROM usuario WHERE login = '"+username+"' and senha = '"+password+"'"; 
boolean contatos; 
try{ 

conn = getConnection(); 
stmt = conn.createStatement(); 
rs   = stmt.executeQuery(sql); 

while (rs.next()){ 
	String nomeCompleto = rs.getString("nome"); 
}

if (rs.getString("nome")!= null) { 
contatos = true; 
} 
else{ System.out.println("Usuario invalido");
contatos = false;
}

}
catch (SQLException e) {
		throw e;
} 
finally{ closeAll(conn,stmt,rs); 
}
return contatos;
}
// FIM LOGIN

alguém tem alguma dica?

2 Respostas

marcos.junqueira
while (rs.next()){ 
 	String nomeCompleto = rs.getString("nome"); 
 }
 
 if (rs.getString("nome")!= null) {

preste atenção nessa parte do codigo...

quando vc faz while(rs.next), ocorre um loop q leva o cursor do resultSet até a posição depois da ultima

então vc não pode executar rs.getString("nome") depois da ultima posição, pq não tem nada lá...

mictexx

Obrigado, eu acertei aqui, vi minha falha!

Grato,

mictexx

Criado 16 de outubro de 2006
Ultima resposta 16 de out. de 2006
Respostas 2
Participantes 2