Achar o erro DELETE e EDITAR

1 resposta
TheKill

Meu problema unico é que o Editar e Excluir nao funcionan,
os dados sao carregados perfeitos, opcao de cadastro perfeita.
Mas nao funciona Editar e Excluir, nao acho o erro PORFAVOR
Obrigado

Este é meu arquivo JSP

<% if (!(session.getAttribute("snivel") != null && session.getAttribute("snivel").equals("1"))) {
            response.sendRedirect("erro_privilegios.jsp");
        }%>

<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<%@page import="beans.BeanLocacaoMidia" %>

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<c:import url="cabecalho.jsp" />        

<jsp:useBean id="locacaoMidia" class="beans.BeanLocacaoMidia" scope="request">
    <jsp:setProperty name="locacaoMidia" property="*" />
</jsp:useBean>

<%
        String actionForm = "locacaoMidia.jsp?acao=listar";
        String display = "grade";
        String labelBtn = "";
        String descAtiv = "Cadastro de Locacaos";

        String acao = request.getParameter("acao");
        if (acao == null) {
            acao = "listar";
        } else {
            if (acao.equals("excluir")) {
                locacaoMidia.deletarLocacao();
            }
            if (acao.equals("editar")) {
                if (locacaoMidia.carregarLocacao()) {
                    actionForm = "locacaoMidia.jsp?acao=salvar";
                    display = "form";
                    labelBtn = "Salvar";
                    descAtiv = "Alterar locacaoMidia";
                } else {
                    acao = "listar";
                }
            }
            if (acao.equals("salvar")) {
                if (locacaoMidia.atualizarLocacao()) {
                    response.sendRedirect("locacaoMidia.jsp?acao=listar");
                } else {
                    acao = "retornaEditar";
                }
            }
            if (acao.equals("retornaEditar")) {
                actionForm = "locacaoMidia.jsp?acao=salvar";
                display = "form";
                labelBtn = "Salvar";
                descAtiv = "Alterar locacaoMidia";
            }
            if (acao.equals("cadastrar")) {
                actionForm = "locacaoMidia.jsp?acao=incluir";
                display = "form";
                labelBtn = "Cadastrar";
                descAtiv = "Cadastrar locacaoMidia";
            }
            if (acao.equals("incluir")) {
                if (locacaoMidia.incluirLocacao()) {
                    response.sendRedirect("locacaoMidia.jsp?acao=listar");
                } else {
                    acao = "retornaIncluir";
                }
            }
            if (acao.equals("retornaIncluir")) {
                actionForm = "locacaoMidia.jsp?acao=incluir";
                display = "form";
                labelBtn = "Cadastrar";
                descAtiv = "Cadastrar locacaoMidia";
            }

        }

%>
<c:set var="actionForm" value="<%= actionForm %>" />
<c:set var="display" value="<%= display %>" />
<c:set var="labelBtn" value="<%= labelBtn %>" />
<c:set var="descAtiv" value="<%= descAtiv %>" />

<c:set var="erroCliente_idcliente" value='<%= locacaoMidia.getErros("cliente_idcliente") %>' />
<c:set var="erroMidia_idmidia" value='<%= locacaoMidia.getErros("midia_idmidia") %>' />
<c:set var="erroDthrRetirada" value='<%= locacaoMidia.getErros("dthrRetirada") %>' />
<c:set var="erroDthrDevolucao" value='<%= locacaoMidia.getErros("dthrDevolucao") %>' />

<div id="pgtitle">${descAtiv}</div>

<c:choose>
    <c:when test="${display=='form'}">

        <form action="${actionForm}" method=post name="locacaoMidias">

            <input type="hidden" name="idlocacaoMidia" value="${locacaoMidia.idlocacaoMidia}">

            <div>
                <label class="lb">Cliente: </label>
                <input class="cptexto" type="text" name="cliente_idcliente" id="cliente_idcliente" value="${locacaoMidia.cliente_idcliente}" title="cliente_idcliente" />
                <span class="err" id="erro_titulo">${erroCliente_idcliente}</span>
            </div>

            <div>
                <label class="lb">Midia:</label>
                <input class="cptexto" type="text" name="midia_idmidia" id="midia_idmidia" value="${locacaoMidia.midia_idmidia}" size="30" maxlength="40" title="midia_idmidia" />
                <span class="err" id="erro_titulo">${erroMidia_idmidia}</span>
            </div>

            <div>
                <label class="lb">Data Retirada: </label>
                <input class="cptexto" type="text" name="dthrRetirada" id="dthrRetirada" value="${locacaoMidia.dthrRetirada}" title="dthrRetirada" />
                <span class="err" id="erro_titulo">${erroDthrRetirada}</span>
            </div>

            <div>
                <label class="lb">Data Entrega: </label>
                <input class="cptexto" type="text" name="dthrDevolucao" id="dthrDevolucao" value="${locacaoMidia.dthrDevolucao}" title="dthrDevolucao" />
                <span class="err" id="erro_titulo">${erroDthrDevolucao}</span>
            </div>

            <div>
                <label class="lb">  </label>
                <input type="submit" value="${labelBtn}" title="Submeter formulário" />
                <input type="button" value="Cancelar" onclick="window.location='locacaoMidia.jsp?acao=listar'">
            </div>

        </form>
    </c:when>
    <c:otherwise>
        <c:set var="rsLocacaoMidias" value="${locacaoMidia.locacaoMidias}" /><!-- Prepara os resultados da consulta (chama o getlocacaoMidias() do bean )-->
        <div align="center">
            <a href="locacaoMidia.jsp?acao=cadastrar"><b>* Cadastrar novo locacaoMidia</b></a>
        </div>
        <br>

        <div align="center">
            <form action="${actionForm}" method=post name="locacaoMidias">
                <input type="text" name="busca" value="${locacaoMidia.busca}"
                       <input type="submit" value="Buscar">
                <input type="button" value="Limpar" onclick="window.location='locacaoMidia.jsp?acao=listar'">
            </form>

        </div>
        <div align="center">${locacaoMidia.results}</div>
        <table border="1" align="center" width="700">
            <tr>
                <th>Id</th>
                <th>Cliente</th>
                <th>Midia</th>
                <th>Retirada</th>
                <th>Devolucao</th>
                <th>Excluir</th>
                <th>Editar</th>
            </tr>
            <c:forEach var="listaLocacaoMidias" items="${rsLocacaoMidias.rows}">
                <tr>
                    <td>${listaLocacaoMidias.idlocacaoMidia}</td>
                    <td>${listaLocacaoMidias.cliente_idcliente}</td>
                    <td>${listaLocacaoMidias.midia_idmidia}</td>
                    <td>${listaLocacaoMidias.dthrRetirada}</td>
                    <td>${listaLocacaoMidias.dthrDevolucao}</td>
                    <td><a href='locacaoMidia.jsp?acao=excluir&idlocacaoMidia=${listaLocacaoMidias.idlocacaoMidia}&pag=${locacaoMidia.pag}'>Excluir</a></td>
                    <td><a href='locacaoMidia.jsp?acao=editar&idlocacaoMidia=${listaLocacaoMidias.idlocacaoMidia}&pag=${locacaoMidia.pag}'>Editar</a></td>
                </tr>
            </c:forEach>
        </table>
        <div align="center">${locacaoMidia.navegator}</div>
    </c:otherwise>
</c:choose>

<c:import url="rodape.jsp" />

Este é meu arquivo Bean

package beans;
import java.util.Hashtable;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;
import java.sql.*;
import conexao.*;

public class BeanLocacaoMidia implements java.io.Serializable{
    //Nomes dos atributos preferencialmente iguais aos usados no formulario
    private int idlocacaoMidia;
    private String cliente_idcliente;
    private String midia_idmidia;
    private String dthrRetirada;
    private String dthrDevolucao;

    private String busca;  //String de pesquisa no BD
    private String pag;   //Pagina atual de exibição (paginação)
    private String results; //String que conterá a msg 'Resultados 1 a XX do total de XXX' para a paginação
    private String navegator; //conterá o link com as paginas para navegar entre os resultados
    private Result locacaoMidias;   // conterá o arraylist com os resultados da consulta   
    private Hashtable erros; //Este atributo serve para o controle de erros no formulario

    public BeanLocacaoMidia() { //Iniciamos os atributos
        cliente_idcliente = "";
        midia_idmidia = "";
        dthrRetirada = "";
        dthrDevolucao = "";
        busca = "";
        pag = "1";
        navegator = "";
        results = "";
        erros = new Hashtable();
    }
//Metodos para acessar os atributos. getNome() para ver seu valor, e setNome() para ajustar seu valor
    
    public int getIdlocacaoMidia() {
        return idlocacaoMidia;
    }

    public String getCliente_idcliente() {
        return cliente_idcliente;
    }

    public String getMidia_idmidia() {
        return midia_idmidia;
    }

    public String getDthrRetirada() {
        return dthrRetirada;
    }

    public String getDthrDevolucao() {
        return dthrDevolucao;
    }

    public String getBusca() {
        return busca;
    }

    public String getPag() {
        return pag;
    }

    public void setPag(String pag) {
        this.pag = pag;
    }

    public void setCliente_idcliente(String cliente_idcliente) {
        this.cliente_idcliente = cliente_idcliente;
    }

    public void setMidia_idmidia(String midia_idmidia) {
        this.midia_idmidia = midia_idmidia;
    }

    public void setDthrRetirada(String dthrRetirada) {
        this.dthrRetirada = dthrRetirada;
    }

    public void setDthrDevolucao(String dthrDevolucao) {
        this.dthrDevolucao = dthrDevolucao;
    }

    public void setBusca(String busca) {
        this.busca = busca;
    }
    
    public boolean isValido(){ //validacao
        boolean volta = true;
        if ((cliente_idcliente == null) || cliente_idcliente.equals("")){
            erros.put("cliente_idcliente", "Por favor, digite o idcliente.");
            volta = false;
        }
        if ((midia_idmidia == null) || midia_idmidia.equals("") ){
            erros.put("midia_idmidia", "Por favor, digite o idmidia.");
            volta = false;
        }
        if ((dthrRetirada == null) || dthrRetirada.equals("") ){
            erros.put("dthrRetirada", "Por favor, digite a data Retirada.");
            volta = false;
        }
        if ((dthrDevolucao == null) || dthrDevolucao.equals("") ){
            erros.put("dthrDevolucao", "Por favor, selecione a data Devolucao.");
            volta = false;
        }
        return volta;
    }
    public String getErros (String s){ //Usado para ver as mensagens de erro armazenados na tabela de Hash
        String msg = (String) erros.get(s);
        return (msg == null) ? "" : msg;
    }
    public void setErros (String chave, String msg){ //Usado para colocar algum erro na tabela
        erros.put(chave,msg);
    }

    public void listarLocacaoMidias()throws SQLException{ //faz a consulta paginada
        Conexao con = new Conexao();
        String filtro="";
        if(!busca.equals("")){
            filtro+="WHERE idlocacaoMidia LIKE '%"+busca+"%'"
                    +"OR cliente_idcliente LIKE '%"+busca+"%'"
                    +"OR midia_idmidia LIKE '%"+busca+"%'"
                    +"OR dthrRetirada LIKE '%"+busca+"%'"
                    +"OR dthrDevolucao LIKE '%"+busca+"%'";
        }
        String query="SELECT * FROM locacaomidia "+filtro;
        String querytotal="SELECT idlocacaoMidia FROM locacaomidia "+filtro;
        int pagina;
        try{
           pagina=Integer.parseInt(pag);
        }
        catch(Exception e){
            pagina=1;
        }
        con.paginar(query,querytotal,"?acao=listar&busca="+busca,pagina,10);
        locacaoMidias = ResultSupport.toResult(con.rs);//converte o resultset para um arraylist
        this.results=con.getResultsNav();
        this.navegator=con.getNavegatorNav();
        con.rs.close();
        con.fecharConexao();
    }

    public Result getlocacaoMidias()throws SQLException { //Retorna o objeto com a consulta paginada para ser usado com o foreach do jstl
        this.listarLocacaoMidias();//chama a metodo que faz a consulta e alimenta o arraylist locacaoMidias
        return locacaoMidias;
    }
    
    public String getResults(){ //Retorna o resumo de resultados da busca paginada
        return results;
    }
    public String getNavegator(){//Retorna o navegador de resultados da busca paginada
        return navegator;
    }

    public void deletarLocacao()throws SQLException{ //exclui o locacaoMidia cujo cogigo esta setado neste bean
        Conexao con = new Conexao();
        con.executeUpdate("DELETE FROM locacaomidia WHERE idlocacaoMidia='"+idlocacaoMidia+"'");
        con.fecharConexao();
    }

    public boolean carregarLocacao() throws SQLException { //carrega os dados do DB setando neste bean
        Conexao con = new Conexao();
        boolean res;
        ResultSet rs=null;
        rs=con.executeQuery("SELECT * FROM locacaomidia WHERE idlocacaoMidia='"+idlocacaoMidia+"'");
        if(rs.next()){
            this.idlocacaoMidia=rs.getInt("idlocacaoMidia");
            this.cliente_idcliente=rs.getString("cliente_idcliente");
            this.midia_idmidia=rs.getString("midia_idmidia");
            this.dthrRetirada=rs.getString("dthrRetirada");
            this.dthrDevolucao=rs.getString("dthrDevolucao");
            res = true;
        }
        else res = false;
        rs.close();
        con.fecharConexao();
        return res;
    }

    public boolean atualizarLocacao()throws SQLException{// atualiza o registro no BD
        if(this.isValido()){
            Conexao con = new Conexao();
            String query="UPDATE locacaomidia SET "
                             +" cliente_idcliente='"+cliente_idcliente+"'"
                             +",midia_idmidia='"+midia_idmidia+"'"
                             +",dthrRetirada='"+dthrRetirada+"'"
                             +",dthrDevolucao='"+dthrDevolucao+"'"
                             +" WHERE idlocacaoMidia='"+idlocacaoMidia+"'";
            con.executeUpdate(query);
            con.fecharConexao();
            return true;
        }
        else return false;
    }
    public boolean incluirLocacao()throws SQLException{// Inclui um novo registro no BD
        if(this.isValido()){
            Conexao con = new Conexao();
            String query="INSERT INTO locacaomidia(cliente_idcliente,midia_idmidia,dthrRetirada,dthrDevolucao) VALUES("
                             + "'"+cliente_idcliente+"'"
                             +",'"+midia_idmidia+"'"
                             +",'"+dthrRetirada+"'"
                             +",'"+dthrDevolucao+"'"
                             +")";  
            con.executeUpdate(query);
            con.fecharConexao();
            return true;
        }
        else return false;
    }
}

1 Resposta

O

pra começar faltou o velho amigo "";"" no fim dos comandos SQL. Não sei mas aqui só funciana se ele estiver presente :lol: , ok e tambem este teu update esta meio estranho, vou te mostrar um que eu fiz logo após o seu:

SEU:

con.executeUpdate("DELETE FROM locacaomidia WHERE idlocacaoMidia='"+idlocacaoMidia+"'"); 

 String query="UPDATE locacaomidia SET "" cliente_idcliente='"+cliente_idcliente+"'" +",midia_idmidia='"+midia_idmidia+"'" +",dthrRetirada='"+dthrRetirada+"'"+",dthrDevolucao='"+dthrDevolucao+"'"+" WHERE idlocacaoMidia='"+idlocacaoMidia+"'";

MEU:

con.executeUpdate("DELETE FROM locacaomidia WHERE idlocacaoMidia='"+idlocacaoMidia+"';"); 

String query=("update locacaomidia set clienteidcliente='"+cliente_idcliente+"', midia_idmidia='"+midia_idmidia+"', dthrRetirada='"+dthrRetirada+"', dthrDevolucao='"+dthrDevolucao+"' where idlocacaoMidia='"+idlocacaomidia+"'")

Não esqueça depois de uma operação no BD como por exemplo:

con.executeUpdate("DELETE FROM locacaomidia WHERE idlocacaoMidia='"+idlocacaoMidia+"';");

use o comando:

con.rs.next();

alguns lugares falto este comando!

espero ter ajudado. Se persistir o erro reporte.

Criado 15 de junho de 2009
Ultima resposta 15 de jun. de 2009
Respostas 1
Participantes 2