Buscando no Banco de Dados

Olá, estou fazendo uma aplicação com banco de dados basica, com entrada de 2 inteiros e 3 Strings… Ja consigo inserir linhas no banco (PostgreSQL) sem problemas…

Porém não consigo buscar objetos no banco… Estou criando a aplicaçao no eclipse com WTP e meu tomcat é o 5.5…

Quanto ao meu codigo está assim…

A primeira Jsp que passa o parâmetro com o nome a ser buscado…

A servlet abaixo, que recebe esse parâmetro e chama a DAO…

UsuarioDAO busdao = new UsuarioDAO();
		Usuario usu = new Usuario();
		String usunome = req.getParameter("buscar");
		usu.setNome(usunome);
			try {
				usu = busdao.Buscar(usunome);
			} catch (NamingException e) {
				e.printStackTrace();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
			
			req.setAttribute("usuario", usu);
			RequestDispatcher rd = req.getRequestDispatcher("resultado.jsp");
			rd.forward(req, res);
		}

A servlet DAO, Buscar

public Usuario Buscar(String usu) throws NamingException, SQLException{
			pc = new PoolConexao();
			conn = pc.getConnection();
			ps=conn.prepareStatement(SQL_BUSCAR);
			ps.setString(1,"%"+usu+"%");
			rs = ps.executeQuery();

			Usuario usuario = new Usuario();

				if(rs.next()){
					usuario.setId(rs.getInt("id"));
					usuario.setNome(rs.getString("nome"));
					usuario.setIdade(rs.getInt("idade"));
					usuario.setSexo(rs.getString("sexo"));
					usuario.setProduto1(rs.getString("produto1"));
					usuario.setProduto2(rs.getString("produto2"));
				}
			
			return usuario ;
		}

A tag que recebe o resultado

public class ResultadoUsuario extends TagSupport {
	private Usuario resultado;

	 
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut(); 
		
		
		try {
			out.println("<center>");
			out.println("<table border=2>");
			out.println("<tr>");
			out.println("<td>Id:</td>");
			out.println("<td>Nome:</td>");
			out.println("<td>Idade:</td>");
			out.println("<td>Sexo:</td>");
			out.println("<td>Produto1:</td>");
			out.println("<td>Produto2:</td>");
			out.println("</tr>");
			
			out.println("<tr>");
			out.println("<td>" + resultado.getId() + "</td>");
			out.println("<td>" + resultado.getNome() + "</td>");
			out.println("<td>" + resultado.getIdade() + "</td>");
			out.println("<td>" + resultado.getSexo() + "</td>");
			out.println("<td>" + resultado.getProduto1() + "</td>");
			out.println("<td>" + resultado.getProduto2() + "</td>");
			out.println("</tr>");
			out.println("</table>");
			out.println("</center>");
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return SKIP_BODY;
	}
	public Usuario getResultadoUsuario() {
		return resultado;
	}

	public void setResultadoUsuario(Usuario resultado) {
		this.resultado = resultado;
	 
	}

Por fim, essa tag esta sendo chamada na jsp que exibiria o resultado

<%@ page isELIgnored="false"%>
<%@ taglib uri="Taglib" prefix="resul" %>
  
<html>
<body>
  
  <resul:ResultadoUsuario resultado="${usuario}" />
  
  <center>	
  	<p><a href="http://localhost:8080/AAprendiz2/cadastro.jsp">Voltar </a></p>
  </center>

</body>
</html>

O erro que ele esta apresentando é:
[color=red]org.apache.jasper.JasperException: /resultado.jsp(7,2) Unable to find setter method for attribute: resultado[/color]

E no servidor ele apresenta esse erro:
[color=red]o índice da coluna está fora do intervalo: 1, numero de colunas:0[/color]

Será que alguem conseguiria me ajudar? Se for nescessario eu colo outras partes do codigo aqui…

Obrigado!

Não seria o parâmetro resultadoUsuario da tag que você está chamando de resultado?

<%@ page isELIgnored="false"%>
<%@ taglib uri="Taglib" prefix="resul" %>
  
<html>
<body>
  
  <resul:ResultadoUsuario resultadoUsuario="${usuario}" />
  
  <center>	
  	<p><a href="http://localhost:8080/AAprendiz2/cadastro.jsp">Voltar </a></p>
  </center>

</body>
</html>

Puts, verdade, brigadão cara… Só agora ele esta jogando a jsp, porem com os resultados = null;

=//

alguem sabe porque?!

o nome que esta sendo passado por parametro é exatamente o mesmo que esta no banco

Já fez um debug pra ver se está buscando o usuário direito? Faz um debug na sua Tag e nos servlets.

Já pensou em utilizar uma taglib pronta e com mais suporte como essa, se sua consulta for muito grande você deve implementar uma paginação e outras coisas como ordenação.

http://displaytag.homeip.net/displaytag-examples-1.1/example-pse.jsp

pelo que estou percebendo o programa não esta nem setando o objeto pelo banco…

quando eu coloco um println na servlet buscar, depois de chamar a dao, ele ja imprime null

será que algm poderia me ajudar? ja estou a dias tentando achar o erro

Como está a sua query? Se em SQL_BUSCAR estiver mais ou menos assim:

SELECT * FROM table WHERE column = ?

não vai funcionar a sua busca, pois você passou como parâmetro de busca

ps.setString(1,"%"+usu+"%");

Para usar “wild card”, tem que usar LIKE

SELECT * FROM table WHERE column LIKE ?

minha query ta assim cara

private static final String SQL_BUSCAR = "SELECT * FROM cadastro WHERE nome LIKE ?";

ja tentei com aspas entre o ? também, mas msm assim nao da certo…

eu to passando nome como parametro…

oque estou estranhando eh q no tomcat ele continua dando o erro

[color=red]o índice da coluna está fora do intervalo: 1, numero de colunas:0 [/color]

someone?