Dúvida: Listar dados gravados de uma tabela do banco em Lista Suspensa

1 resposta
F

Pessoal,

To com dúvida ao listar os dados do ID Cliente no formulário em uma lista suspensa. Alguém sabe como coloca para referenciar os dados?

Segue abaixo as classes

formPedidos.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"
        import="tasii.restaurante.model.*"%>
<%
Pedidos pedido = new Pedidos();
pedido.setIdPedidos(0);

if (null!=request.getParameter("pedidosEdit")){
    pedido = (Pedidos) request.getAttribute("pedidosEdit");
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Controle de Restaurante</title>
</head>

<body>

<div class="container">
  <div class="header"><a href="index.jsp" style="background: #C6D580" />CONTROLE DE RESTAURANTE - PEDIDOS</a>
  </div>
  <div class="content">
      <center>
      <h1>CADASTRO DE PEDIDOS</h1><br />
      <form action="do">
            <input type="hidden" name="action" value="GravarPedidos"/>
            <label>Id Pedidos: <input type="text" name="idPedidos" value="<%=pedido.getIdPedidos()%>"
            <%=pedido.getIdPedidos()>0?"readonly=\"readonly\"":""%></label><br />
            <label>Data Pedido: <input type="text" name="dataPedido" value="<%=pedido.getDataPedido()%>"</label><br />
            <label>Valor Total: <input type="text" name="valorTotal" value="<%=pedido.getValorTotal()%>"</label><br />
            <label>Id Clientes: <input type="text" name="clientes_ID" value="<%=pedido.getclientes_ID()%>"/></label><br />
            <label>Id Mesas: <input type="text" name="mesa_ID" value="<%=pedido.getmesa_ID()%>"/></label><br />
            <label>Id Produto: <input type="text" name="produtos_ID" value="<%=pedido.getProdutos_ID()%>"/></label><br />
            <input type="submit" name="submit" value="Gravar"/><br />
            <a href="do?action=ListarPedidos">Cancelar / Voltar para Lista de Pedidos</a>
        </form>
    </div>  
  <div class="footer">
    <p>Desenvolvido por Fernando Chimicoviaki</p>
    <!-- end .footer --></div>
  <!-- end .container --></div>
</body>
</html>

Classe PedidosDAO

package tasii.restaurante.model;

import java.sql.ResultSet;
import java.sql.Statement;

public class PedidosDAO extends DAO{
    
    public ResultSet listar() throws Exception{
        this.conecta();
        Statement stm = con.createStatement();
        String SQL = "SELECT * FROM pedidos";
        return stm.executeQuery(SQL);
    }
    
    public ResultSet listarPorClientes(int clientes_ID) throws Exception{
        this.conecta();
        Statement stm = con.createStatement();
        String SQL = "SELECT * FROM pedidos WHERE clientes_ID=" +clientes_ID;
        return stm.executeQuery(SQL);
    }
    
    public Pedidos consulta(int idPedidos){
        try{
            this.conecta();
            Statement stm = con.createStatement();
            String SQL = "SELECT * FROM pedidos WHERE idPedidos=" +idPedidos;
            ResultSet res = stm.executeQuery(SQL);
            
            if(res.next()){
                Pedidos pedido = new Pedidos();
                pedido.setIdPedidos(res.getInt("idPedidos"));
                pedido.setDataPedido(res.getString("dataPedido"));
                pedido.setValorTotal(res.getDouble("valorTotal"));
                pedido.setclientes_ID(res.getInt("clientes_ID"));
                pedido.setmesa_ID(res.getInt("mesa_ID"));
                pedido.setProdutos_ID(res.getInt("produtos_ID"));
                return pedido;
            }
        }
        
        catch(Exception e){
            e.printStackTrace();
        }
        
        return null;
    }
    
    public boolean gravar(Pedidos pedidos){
        boolean res = false;
        
        try{
            this.conecta();
            Statement stm = con.createStatement();
            String SQL;
            
            if(pedidos.getIdPedidos()>0){
                SQL = "UPDATE pedidos set dataPedido='" + pedidos.getDataPedido() + "', valorTotal='" + pedidos.getValorTotal() + 
                        "', clientes_ID='" + pedidos.getclientes_ID() + "', mesa_ID='" + pedidos.getmesa_ID() + 
                        "', produto_ID='" + pedidos.getProdutos_ID() + " WHERE idPedidos=" + pedidos.getIdPedidos();   
            }else{
                SQL = "INSERT INTO pedidos (dataPedido, valorTotal, clientes_ID, mesa_ID, produto_ID) VALUES ('" + pedidos.getDataPedido() + 
                        "','" + pedidos.getValorTotal() + "','" + pedidos.getclientes_ID() + "','" + pedidos.getmesa_ID() + "','" + pedidos.getProdutos_ID() + "')";
            }
            
            if (stm.executeUpdate(SQL)>0) res = true;
        }
        catch (Exception e){
            e.printStackTrace();
        }
        
        return res;
    }
    
    public boolean excluir (int idPedidos){
        boolean res = false;
        
        try{
            this.conecta();
            Statement stm = con.createStatement();
            String SQL = "DELETE FROM pedidos WHERE idPedidos=" + idPedidos;
            
            if (stm.executeUpdate(SQL)>0) res = true;
        }
        catch(Exception e){
            e.printStackTrace();
        }
        
        return res;
    }
}

Fico no aguardo

1 Resposta

Alys

Não entendi direito: você quer fazer o JSP acessar o método no DAO para recuperar os clientes, e montar a lista de seleção, é isso?

Se for, antes de mais nada você precisa de um método no DAO que faça isso. Pelo que vi, seus métodos retornam pedidos, e não clientes. Feito isso, você recupera seus clientes no JSP, e monta um html select tipo assim:

<select name="clientes">

<%
List clientes = dao.recuperaClientes();
for (Cliente cliente: clientes){
%>
    <option value ="<%=cliente.id%>" ><%=cliente.nome%> </option>
<%
}
%>
</select>

Obs: isso é só um pseudo-código, para dar uma ideia geral.

Agora, tal como eu disse em outro post, pra referência futura: fazer um JSP acessar direto um método do DAO é uma péssima ideia. Procure depois sobre padrões de projetos, desenvolvimento em camada e frameworks web, depois escolha um de sua preferência.

Criado 18 de junho de 2012
Ultima resposta 19 de jun. de 2012
Respostas 1
Participantes 2