Erro no cadastro

1 resposta
E
Estou criando um cadastro de funcionário segue a classe que criei
package persistencia;

import empresa.Departamento;
import funcionarios.Funcionario;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class Banco {
    
    public Connection con = null;
    public Statement st = null;
    public ResultSet rs = null;
    
    /** Creates a new instance of Banco */
    public Banco() throws Exception{
        con = Conexao.getConnection();
        st = con.createStatement();
    }
    
public void salvarDepartamento(Departamento dep)throws Exception{
        
        st.executeUpdate("insert into departamento values ("+dep.getCodDep()+",'"+dep.getNomeDep()+"')");
        
    }
    
    public void salvarFuncionario(Funcionario func, int dep)throws Exception{
        
      st.executeUpdate("insert into funcionario values ("+func.getCodFunc()+",'"+func.getNome()+"',"+func.getSalBruto()+","+dep+")");
        
    }
    
    public Departamento carregarDepartamento(int dep) throws Exception{
        Departamento departamento = null;
        rs = st.executeQuery("select * from Departamento where coddep = "+dep);
        if(rs.next()){
            departamento = new Departamento();
            departamento.setCodDep(rs.getInt(1));
            departamento.setNomeDep(rs.getString(2));         
        }
        return departamento;
    }
    
    public List carregarFuncionario(int func) throws Exception{
        Funcionario funcionario = null;
        List lista = null;
        int codDep;
        rs = st.executeQuery("select * from Funcionario where codfunc = "+func);
        if(rs.next()){
            funcionario = new Funcionario();
            funcionario.setCodFunc(rs.getInt(1));
            funcionario.setNome(rs.getString(2));         
            funcionario.setSalBruto(rs.getDouble(3));
            codDep = rs.getInt(4);
            lista = new ArrayList();
            lista.add(funcionario);
           [b] lista.add(codDep);[/b]        }
        return lista;
    }    
    
}
e criei o servelet
package controles;

import empresa.Departamento;
import funcionarios.Funcionario;
import java.io.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import persistencia.Banco;

public class ControleConsultaFuncionario extends HttpServlet {
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
         Banco banco = null;
        Funcionario func = null;
        Departamento departamento = null;
        List lista = null;
        RequestDispatcher view = null;

        try{
        
            banco = new Banco();
            
            int codFunc = Integer.parseInt(request.getParameter("txtCodFunc"));
              
            
            lista = banco.carregarFuncionario(codFunc);
            func = (Funcionario) lista.get(0);
            [b]int codDep = (Integer) lista.get(1);[/b]
            departamento = banco.carregarDepartamento(codDep);
            request.setAttribute("func", func);
            request.setAttribute("dep",departamento);
            
            view = request.getRequestDispatcher("viewFuncionarios.jsp");
            
        }catch(Exception e){
            view = request.getRequestDispatcher("Erro.jsp");
        }
        
        view.forward(request,response);
    }
Eu acho que está correto mas o NetBeans marca o erro onde ei coloquei em negrito e não consigo compilar, qual será o erro. Obrigado desde já.

1 Resposta

felipealbuquerque

Não é comum colocar dois objetos de tipos totalmente distintos em uma mesma lista (no caso um funcionário e um departamento, ou um funcionário e um int).
Eu faria o código da seguinte maneira (se é que o entendi bem):

public Funcionario carregarFuncionario(int func) throws Exception{  
        Funcionario funcionario = null;  
        rs = st.executeQuery("select * from Funcionario where codfunc = "+func);  

        if(rs.next()){  
            funcionario = new Funcionario();  
            funcionario.setCodFunc(rs.getInt(1));  
            funcionario.setNome(rs.getString(2));           
            funcionario.setSalBruto(rs.getDouble(3));  
            funcionario.setDepartamento(carregarDepartamento(rs.getInt(4)));
        }

        return funcionario;  
    }

Para tanto, é necessário que o funcionário tenha um departamento como propriedade.
Espero tê-lo ajudado.

Criado 16 de abril de 2008
Ultima resposta 16 de abr. de 2008
Respostas 1
Participantes 2