[Resolvido] Dúvida - Classe com ResultSet não funciona

9 respostas
F

Fala pessoal.

To com um problema na minha classe DAO para listar por clientes.
Segue o código abaixo. Se alguém puder me ajudar, agradeço.

Classe MesasDAO

package tasii.restaurante.model;

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

public class MesasDAO extends DAO{
    
    public ResultSet listar() throws Exception{
        this.conecta();
        Statement stm = con.createStatement();
        String SQL = "SELECT * FROM mesas";
        return stm.executeQuery(SQL);
    }
    
    public ResultSet listarPorClientes(int clientes_ID) throws Exception{
        this.conecta();
        Statement stm = con.createStatement();
        String SQL = "SELECT * FROM mesas WHERE clientes_ID" +clientes_ID;
        return stm.executeQuery(SQL);
    }
    
    public Mesas consulta(int idMesas){
        try{
            this.conecta();
            Statement stm = con.createStatement();
            String SQL = "SELECT * FROM mesas WHERE idMesas=" +idMesas;
            ResultSet res = stm.executeQuery(SQL);
            
            if(res.next()){
                Mesas mesas = new Mesas();
                mesas.setIdMesas(res.getInt("idMesas"));
                mesas.setClientes_ID(res.getInt("clientes_ID"));
                mesas.setNumeroMesa(res.getInt("numeroMesa"));
                return mesas;
            }
        }
        
        catch(Exception e){
            e.printStackTrace();
        }
        
        return null;
    }

Classe Listar Mesas

package tasii.restaurante.action;

import java.io.IOException;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import tasii.restaurante.model.MesasDAO;
import tasii.restaurante.model.ClienteDAO;
import tasii.restaurante.model.Cliente;

public class ListarMesas extends Command {
    public String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        String pagdest = "listarMesas.jsp";
        int clientes_ID = 0;
        try{
            MesasDAO mesas = new MesasDAO();
            clientes_ID = Integer.parseInt(request.getParameter("clientes_ID"));
            ClienteDAO cliente = new ClienteDAO();
            Cliente cli = cliente.consulta(clientes_ID);            
            request.setAttribute("cliente", cli);
            ResultSet res =  mesas.listarPorClientes(clientes_ID);
            
            request.setAttribute("res", res);
        }
        catch (Exception e){
            System.out.println(e.getMessage());
            request.setAttribute("msg", "Erro em: ListarMesas.execute()");
            request.setAttribute("pagdest", "do?action=ListarMesas&clientes_ID=" + clientes_ID);
            request.getRequestDispatcher("mensagem.jsp").forward(request, response);
        }
        return pagdest;
    }
}

Classe Listar Mesas.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"
        import="tasii.restaurante.model.*, java.sql.ResultSet"%>
<%
try{
    Cliente cli = (Cliente) request.getAttribute("cliente");
    ResultSet res = (ResultSet) request.getAttribute("res");
%>
<!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>Mesas</title>
</style></head>

<body>

<div class="container">
  <div class="header1"><a href="do?action=ListarClientes" style="background: #C6D580" /></a>CONTROLE DE RESTAURANTE - MESAS</a> </div>
  <div class="sidebar1">
    <ul class="nav">
      <li><a href="do?action=ListarClientes">Clientes</a></li>
    </ul>
    </div>
  <div class="content">
      <h1>Mesa do Cliente <%=cli.getNome()%></h1>
  <div class="tableborder"><table border="1">
          <tr><th>Id Mesas</th><th>Id Clientes</th><th>Numero da Mesa</th></tr>
            <%
            while (res.next()){
                Mesas mesas = new Mesas();
                mesas.setIdMesas(res.getInt("idMesas"));
                mesas.setClientes_ID(res.getInt("clientes_ID"));
                mesas.setNumeroMesa(res.getInt("numeroMesa"));
            %>
            <tr><td><%=mesas.getIdMesas()%>[<a href="do?action=ExcluirMesas&idMesas=<%=mesas.getIdMesas()%>">X</a>]</td>
                <td><a href="do?action=EditarMesas&idMesas=<%=mesas.getIdMesas()%>"><%=mesas.getClientes_ID()%></a></td><td><%=mesas.getNumeroMesa()%></td></tr>
            <%}%>
        </table></div>
        <p><a href="do?action=EditarMesas"><strong>Novo Grupo de Mesas</strong></a></p>
    </div>
  <div class="footer">
    <p>Desenvolvido por Fernando Chimicoviaki</p>
    <!-- end .footer --></div>
<!-- end .container --></div>
</body>
</html>
<%
} catch(Exception e){
    e.printStackTrace();
}
%>

Obrigado

9 Respostas

Hebert_Coelho

Troca de “SELECT * FROM mesas WHERE clientes_ID” +clientes_ID; para "SELECT * FROM mesas WHERE clientes_ID = " +clientes_ID;

F

Jakefrog...

E caso a minha classe tenha mais de um resultSet de consulta e não listar?

ProdutosDAO

package tasii.restaurante.model;

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

public class ProdutosDAO extends DAO{
    
    public ResultSet listar() throws Exception{
        this.conecta();
        Statement stm = con.createStatement();
        String SQL = "SELECT * FROM produtos";
        return stm.executeQuery(SQL);
    }
    
    public ResultSet listarPorGruposProdutos(int gruposProdutos_ID) throws Exception{
        this.conecta();
        Statement stm = con.createStatement();
        String SQL = "SELECT * FROM produtos WHERE gruposProdutos_ID=" +gruposProdutos_ID;
        return stm.executeQuery(SQL);
    }
    
    public ResultSet listarPorSubgruposProdutos(int subgruposProdutos_ID) throws Exception{
        this.conecta();
        Statement stm = con.createStatement();
        String SQL = "SELECT * FROM produtos WHERE idSubgruposProdutos=" +subgruposProdutos_ID;
        return stm.executeQuery(SQL);
    }

Classe ListarProdutos

package tasii.restaurante.action;

import java.io.IOException;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import tasii.restaurante.model.GruposProduto;
import tasii.restaurante.model.GruposProdutoDAO;
import tasii.restaurante.model.ProdutosDAO;
import tasii.restaurante.model.SubgruposProdutosDAO;
import tasii.restaurante.model.SubgruposProdutos;

public class ListarProdutos extends Command {
    public String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        String pagdest = "listarProdutos.jsp";
        int gruposProdutos_ID=0;
        int subgruposProdutos_ID=0;
        
        try{
            ProdutosDAO produtos = new ProdutosDAO();
            gruposProdutos_ID = Integer.parseInt(request.getParameter("gruposProdutos_ID"));
            GruposProdutoDAO gruprod = new GruposProdutoDAO();
            GruposProduto grupo = gruprod.consulta(gruposProdutos_ID);
            request.setAttribute("grupos", grupo);
            ResultSet res = produtos.listarPorGruposProdutos(gruposProdutos_ID);
            
            subgruposProdutos_ID = Integer.parseInt(request.getParameter("subgruposProdutos_ID"));
            SubgruposProdutosDAO subgruprod = new SubgruposProdutosDAO();
            SubgruposProdutos subgrupo = subgruprod.consulta(subgruposProdutos_ID);
            request.setAttribute("subgrupos", subgrupo);
            ResultSet res1 = produtos.listarPorSubgruposProdutos(subgruposProdutos_ID);
            
            request.setAttribute("res", res);
            request.setAttribute("res", res1);
        }
        catch (Exception e){
            System.out.println(e.getMessage());
            request.setAttribute("msg", "Erro em: ListarProdutos.execute()");
            request.setAttribute("pagdest", "do?action=ListarProdutos&gruposProdutos_ID=" + gruposProdutos_ID);
            request.setAttribute("pagdest", "do?action=ListarProdutos&subgruposProdutos_ID=" + subgruposProdutos_ID);
            request.getRequestDispatcher("mensagem.jsp").forward(request, response);
        }
        return pagdest;
    }
}

listar Produtos .jsp

<%@page contentType="text/html" pageEncoding="UTF-8"
        import="tasii.restaurante.model.*, java.sql.ResultSet"%>
<%
try{
    GruposProduto gruprod = (GruposProduto) request.getAttribute("grupos");
    SubgruposProdutos subgruprod = (SubgruposProdutos) request.getAttribute("subgrupos");
    ResultSet res = (ResultSet) request.getAttribute("res");
    ResultSet res1 = (ResultSet) request.getAttribute("res");
%>
<!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>Produtos</title>
<style type="text/css">
<head>

<body>

<div class="container">
  <div class="header1"><a href="listarClientes.jsp" style="background: #C6D580" /></a>CONTROLE DE RESTAURANTE - PRODUTOS</a> </div>
  <div class="sidebar1">
    <ul class="nav">
      <li><a href="do?action=ListarGruposProduto.jsp">Grupo de Produtos</a></li>
      <li><a href="do?action=ListarSubgruposProdutos.jsp">Subgrupo de Produtos</a></li>
    </ul>
    </div>
  <div class="content">
  <div class="tableborder"><table border="1">
            <tr><th>Id Produtos</th><th>Id Grupos de Produtos</th><th>Id Subgrupos de Produtos</th><th>Valor Unitario</th><th>Quantidade</th></tr>
            <%
            while (res.next()){
                Produtos produtos = new Produtos();
                produtos.setIdProdutos(res.getInt("idProdutos"));
                produtos.setGruposProdutos_ID(res.getInt("gruposProdutos_ID"));
                produtos.setSubgruposProdutos_ID(res.getInt("subgruposProdutos_ID"));
                produtos.setValorUnitario(res.getDouble("valorUnitario"));
                produtos.setQuantidade(res.getInt("quantidade"));
            %>
            <tr><td><%=produtos.getIdProdutos()%>[<a href="do?action=ExcluirProduto&idProdutos=<%=produtos.getIdProdutos()%>">X</a>]</td>
                <td><a href="do?action=EditarProdutos&idProdutos=<%=produtos.getIdProdutos()%>"><%=produtos.getGruposProdutos_ID()%></a></td><td><%=produtos.getSubgruposProdutos_ID()%></td><td><%=produtos.getValorUnitario()%></td><td><%=produtos.getQuantidade()%></tr>
            <%}%>
        </table></div>
        <p><a href="do?action=EditarProdutos"><strong>Novo Produtos</strong></a></p>
    </div>
  <div class="footer">
    <p>Desenvolvido por Fernando Chimicoviaki</p>
    <!-- end .footer --></div>
<!-- end .container --></div>
</body>
</html>
<%
} catch(Exception e){
    e.printStackTrace();
}
%>

Nesse caso, não é listado por ter mais de 2 resultsets ou porque não os coloquei corretamente?

Hebert_Coelho

Ou o problema pode ser pq você não está fechando as conexões?

F

Qual das conexões?

Hebert_Coelho

Nenhuma. rs

this.conecta(); Statement stm = con.createStatement(); String SQL = "SELECT * FROM produtos"; return stm.executeQuery(SQL); } Você não está fechando.

F

Pode mostrar um exemplo pra mim?

Hebert_Coelho

Agora não tenho nenhum em mãos.

A Caelum tem diversas apostilas free que contêm essa informação.

Procura no google que você encontra.

F

Pessoal, alguém mais pode me ajudar? Eu não estou conseguindo gravar

F

Pessoal, o problema foi solucionado.

Alguns objetos estavam fora das boas práticas de programação. Fora alguns erros de passar parâmetros de forma errônea.

Obrigado

Criado 13 de junho de 2012
Ultima resposta 18 de jun. de 2012
Respostas 9
Participantes 2