Erro na passagem de Parametro

1 resposta
euripedes_jr

Olá pessoal tudo bom??

Bom estou com a seguinte duvida:

No meu DAO tenho um metodo procura:

public Fabricante procura(Long idFabricante) throws SQLException {
		
		Fabricante fabricante = new Fabricante();
		Connection con = ConnectionFactory.getConnection();
		
		PreparedStatement stmt = con.prepareStatement("select co_fabricante,ds_fabricante,st_fabricante from tb_fabricante where co_fabricante=?");
		stmt.setLong(1,idFabricante);
		ResultSet rs = stmt.executeQuery();

		if (!rs.next())
			return null;

		fabricante.setNomeFabricante(rs.getString("ds_fabricante"));
		rs.close();
		stmt.close();
		return fabricante;
	}

Entao no meu JSP estou passando o parametro “idFabricante” para meu Controller para ele passar para o DAO mas nao esta dando certo. Esta dando erro.

private static final long serialVersionUID = 5768620368959587794L;

	protected void doGet(HttpServletRequest rqt, HttpServletResponse rsp)throws ServletException, IOException {
	    
		String idFabricante = rqt.getParameter("idFabricante");
				
		Fabricante fabricante = new Fabricante();
		fabricante.setIdFabricante(new Long(idFabricante));
							
		try {
			FabricanteDAO.procura(fabricante);
		} catch (SQLException e) {
		    e.printStackTrace();
			System.out.println("Erro: " + e.getMessage());
		}	
			
		RequestDispatcher view = rqt.getRequestDispatcher("/jsp/fabricante/altFabricante.jsp");
		view.forward(rqt, rsp);

		PrintWriter out = rsp.getWriter();
		out.close();
	}
}

Alguem consegue me ajudar nisso???

1 Resposta

M

Olá Euripedes, blz?

Cara, eu percebi algumas coisas no seu código

1º - Você está tentando chamar o método procura como se ele fosse estático, e pelo que eu vi em sua declaração, ele não é
o Corretoseria vc criar uma instância da sua classe de persistência DAO, a sua FabricanteDAO.

2º - No seu método doGet vc está chamando um método que retorna um obejto Fabricante e não o está atribuindo a ninguém

3º - E o erro na passagem de parâmetro acontece pois seu método procura espera um Long e não um Fabricante, portanto seu código poderia ficar assim:

String idFabricante = rqt.getParameter("idFabricante");  
                   
         Fabricante fabricante = new Fabricante();  
         fabricante.setIdFabricante(new Long(idFabricante));  /* Aqui é muito importante vc fazer uma tratativa de excessão, pois o usuário pode digitar um texto qualquer, a não ser que esteja tratando com Javascript */


        FabricanteDAO dao = new FabricanteDAO();

         try {  
             fabricante = dao.procura(fabricante.getIdFabricante());  
         } catch (SQLException e) {  
             e.printStackTrace();  
             System.out.println("Erro: " + e.getMessage());  
         }

Tem outra coisinha tbm, no seu método procura, vc não está setando o Id do Fabricante, quando vc da um return no método, ele retorna um objeto fabricante somente com o nome populado.

É isso, espero ter ajudado!!!

Abraços

Criado 27 de maio de 2008
Ultima resposta 28 de mai. de 2008
Respostas 1
Participantes 2