Bom dia comunidade do GUJ;
Estou reiniciando meus estudos em JAVA EE e necessito implementar uma classe de login, mas está dando a seguinte exceção ao executar o código:
javax.servlet.ServletException: org.postgresql.util.PSQLException: O índice da coluna está fora do intervalo: 2, número de colunas: 0. br.com.javamagazine.exemplologin.Logar.doPost(Logar.java:59) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)O código da minha classe é o seguinte:
package br.com.javamagazine.exemplologin;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Logar
*/
@WebServlet("/Logar")
public class Logar extends javax.servlet.http.HttpServlet{
private static final long serialVersionUID = 1L;
public Logar() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection conexao = null;
PreparedStatement stmt = null;
ResultSet res = null;
try{
String login = request.getParameter("login");
String senha = request.getParameter("senha");
Class.forName("org.postgresql.Driver");
conexao = DriverManager.getConnection("jdbc:postgresql://localhost:5432/meuBancoLindo", "postgres", "123456");
stmt = conexao.prepareStatement("Select * from tb_usuarios where login=angela");
stmt.setString(2, login);
res = stmt.executeQuery();
Usuario usuario = null;
if(res.first()){
usuario = new Usuario();
usuario.setId(res.getInt("id"));
usuario.setNome(res.getString("nome"));
usuario.setLogin(res.getString("login"));
usuario.setSenha(res.getString("senha"));
}
if(usuario==null||!usuario.getSenha().equals(senha)){
request.getSession().setAttribute("msg", "Login ou senha incorretos!");
response.sendRedirect("index.jsp");
}else{
request.getSession().setAttribute("usuario", usuario);
response.sendRedirect("admin/index.jsp");
}
}catch(Exception e){
throw new ServletException(e);
}finally{
try{
res.close();
stmt.close();
conexao.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
Minha Tabela no Banco de Dados é a seguinte:
CREATE TABLE tb_usuarios ( id integer NOT NULL DEFAULT nextval('id_seq'::regclass), nome character varying(100) NOT NULL, login character varying(50) NOT NULL, senha character varying(25) NOT NULL, CONSTRAINT tb_usuarios_pkey PRIMARY KEY (id ) );
Já pesquisei este erro em vários Fóruns e já tentei seguir estes passos para corrigir o problema:
* Mudei a consulta SQL (não adiantou u.u');
* Verifiquei se a consulta funciona ao ser rodada no PgAdminIII (funciona);
stmt.setString(2, login);
Agradeço desde já pela atenção de todos :D
(Se não conseguir, volto aqui).