Struts - Update no Banco Dados

4 respostas
R

Olá pessoal... não sei oque está acontecendo... ele não acusa nenhum erro nem exception mas tambem não efetua a atualização dos dados no Banco.Alguem pode me ajudar?

Trecho da minha JSP
<html:form action="/salvaEditaOpe.do">
        
    <p align="center"><b><font face="Century Gothic" color="#FFFFFF">
   
        
          
    Código: <bean:write name="atributosOperacao" property="codOperacao"/>
    
    Descrição: <html:text name="atributosOperacao" property="descricao"/>
   
    <html:radio property="ativo" value="1" name="atributosOperacao">Ativo</html:radio>
    <html:radio property="ativo" value="2" name="atributosOperacao">Inativo</html:radio>
                                
                          
                                
    </span></font></b></p>
    <p align="center"> </p>
    <p align="center"><b><font face="Century Gothic"><html:submit>Alterar</html:submit></a></font></b></font></p>

Minha Action

public class SalvaEditaOpeAction extends Action{
    
   public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
     throws Exception {
            ActionErrors errors = new ActionErrors();
        try {
       
            HttpSession session = request.getSession(); 
            
            SalvaEditaOpeForm seoForm = (SalvaEditaOpeForm)form; 
        
               
           
            OpeBean opeBean = (OpeBean)session.getAttribute("atributosOperacao"); 
            
            BeanUtils.copyProperties(opeBean, seoForm);
                
                OpeDAO opeDao = new OpeDAO(); 
                opeDao.updateOpe(opeBean);
            
         }
        catch (Exception e) {
            errors.add(
                ActionErrors.GLOBAL_ERROR,
                new ActionError("error.ope.salvaedita")); 
            
        }
            
            
                            if (!errors.isEmpty()) { 
                                  
                                  return (mapping.findForward("failure"));
                            }
                            else {
                                   return (mapping.findForward("success"));         










                                        
                           }     
   
   }
   
   
}

Trecho da minha DAO

public void updateOpe(OpeBean opeBean) throws SQLException { 
      
          conn = retornaConn(); 
           
           PreparedStatement stmt = null;

        try {
            
            stmt = conn.prepareStatement("update Tab_Operacao set Descricao = ?, Ativo = ? where CodOperacao = ?");           
            
           
           stmt.setString(1, opeBean.getDescricao());       
                                              
           stmt.setInt(2, opeBean.getAtivo()); 
           
            stmt.setInt(3, opeBean.getCodOperacao()); 
            
             
            stmt.executeUpdate(); 
                                              
        }
        catch (SQLException e) {
            throw e;
        }
        finally {
                 stmt.close();
                 conn.close();
        }
     }
Trecho do Meu Form
public class SalvaEditaOpeForm extends ActionForm {
     
   private String descricao; // nunca de entrada nessas variaveis com seu valor zerado, ex.: descricao = ""
   private int ativo;
   private int codOperacao;

       
  public ActionErrors validate(ActionMapping mapping, //request para trazer os dados do formulario JSP
			       HttpServletRequest request) {

   //...
  
   
  //getters e setters 
  
  
    public String getDescricao() {
        return descricao;
    }
    
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
  
        public int getAtivo() {
        return ativo;
    }
    
    public void setAtivo(int ativo) {
        this.ativo = ativo;
    }
   
   
     public int getCodOperacao() {
        return codOperacao;
    }
    
    public void setCodOperacao(int codOperacao) {
        this.codOperacao = codOperacao;
    }
    
   
   //...

e por fim trecho do meu bean

public class OpeBean{
    
       
  
     
     private int codOperacao = 0;
     private String descricao="";
     private int ativo = 0;
     private int id = 0;
     private int tipoOperacao = 0;

     
     public int getCodOperacao() {
        return codOperacao;
    }
    
    public void setCodOperacao(int codOperacao) {
        this.codOperacao = codOperacao;
    }
    
    public String getDescricao() {
        return descricao;
    }
    
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    
    public int getAtivo() {
        return ativo;
    }
    
    public void setAtivo(int ativo) {
        this.ativo = ativo;
    }
   
    public int getId() {
        return id;
    }
    
    public void setId(int id) {
        this.id = id;
    }
    
    public int getTipoOperacao() {
        return tipoOperacao;
    }
    
    public void setTipoOperacao(int tipoOperacao) {
        this.tipoOperacao = tipoOperacao;
    }
    
    
}

4 Respostas

P

Tente dar um commit depois do metodo executeUpdate no DAO.

public void updateOpe(OpeBean opeBean) throws SQLException {
     
          conn = retornaConn();
           
           PreparedStatement stmt = null;

        try {
           
            stmt = conn.prepareStatement("update Tab_Operacao set Descricao = ?, Ativo = ? where CodOperacao = ?");           
           
           
           stmt.setString(1, opeBean.getDescricao());       
                                             
           stmt.setInt(2, opeBean.getAtivo());
           
            stmt.setInt(3, opeBean.getCodOperacao());
           
             
            stmt.executeUpdate();
            conn.commit();
                                             
        }
        catch (SQLException e) {
            throw e;
        }
        finally {
                 stmt.close();
                 conn.close();
        }
     }
R

Não deu certo… Faz ideia do que mais poderia ser??

Obrigado.

P

Vc ja tentou debugar a aplicação ?

Coloque uns System.out.println() antes da execucao do stmt.executeUpdate(); pra certificar se os valores estão corretos.

R

Funcionou… debugando percebi que não estava conseguindo recuperar o codOperacao ai foi só substituir

Código: <bean:write name="atributosOperacao" property="codOperacao"/> Por<html:hidden property="codOperacao" name="atributosOperacao"/>

Obrigado,

Rodrigo Marini.

Criado 18 de agosto de 2006
Ultima resposta 19 de ago. de 2006
Respostas 4
Participantes 2