Erro ao salvar e carregar no banco

6 respostas
E

Boa tarde pessoal, estou criando um site onde devo fazer alguns cadastro e consulta. Quando cadastro ele não consegue enchergar o insert pula para página de erro não sei pq e na consulta ele não lê o baco vcs podem me ajudar

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 salvarFuncionario(Funcionario func)throws Exception{
        
      st.executeUpdate("insert into funcionarios values ("+func.getCpf()+",'"+func.getEndereco()+",'"+func.getCep()+",'"+func.getTelefone()+",'"+func.getSalBruto()+")");
    
    }
    
     public List carregarFuncionario(int func) throws Exception{
        Funcionario funcionario = null;
        List lista = null;
        rs = st.executeQuery("select * from funcionarios where funcionarioid = "+func);
        if(rs.next()){
            funcionario = new Funcionario();
            funcionario.setCpf(rs.getString(1));
            funcionario.setEndereco(rs.getString(2));         
            funcionario.setCep(rs.getString(3));
            funcionario.setTelefone(rs.getString(4));
            funcionario.setSalBruto(rs.getDouble(5));
            lista = new ArrayList();
            lista.add(funcionario);
         }
        return lista;
    }

SERVELET

public class ControleCadastroFuncionario extends HttpServlet {
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        Banco banco = null;
        Funcionario func = null;
        
        try{
        
            banco = new Banco();            
            func = new Funcionario();
            
            func.setNome(request.getParameter("txtCpf"));
            func.setNome(request.getParameter("txtNome"));
            func.setEndereco(request.getParameter("txtEndereco"));
            func.setCep(request.getParameter("txtCep"));
            func.setTelefone(request.getParameter("txtTelefone"));
            func.setSalBruto(Double.parseDouble(request.getParameter("txtSalario")));
                    
            banco.salvarFuncionario(func);
            
            response.sendRedirect("Sucesso.jsp");
        }
        
        catch(Exception e){
            response.sendRedirect("Erro.jsp");
        }          
    }

6 Respostas

B

Qual erro ocorre?Poste tbm sua url de conexão com o banco…

[]'s

E
minha conaxão
package modeloAcesso;

import java.sql.Connection;
import java.sql.DriverManager;


public class Conexao {
    
   private static Connection con = null;
    /** Creates a new instance of Conexao */
    public Conexao() {
    }
    
    public static Connection getConnection() throws Exception{
        if(con == null){
            Class.forName("org.postgresql.Driver");
            con = DriverManager.getConnection("jdbc:postgresql:Aquarius","postgres","postgres");
        }
        return con;
    }
    
}

O erro é que ele entra na págine de erro.jsp não conclui o cadastro
E a consulta estou fiz esse servelet mas etá dando erro na parte em negrito. Obrigado pela ajuda.

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        Banco banco = null;
        Funcionario func = null;
        List lista = null;
        RequestDispatcher view = null;

         try{
        
            banco = new Banco();
            
            String cpf = (request.getParameter("txtCpf"));
              
            
            [b]lista = banco.carregarFuncionario(cpf);[/b]    
            func = (Funcionario) lista.get(0);
            request.setAttribute("func", func);
                        
            view = request.getRequestDispatcher("viewFuncionarios.jsp");
            
        }catch(Exception e){
            view = request.getRequestDispatcher("Erro.jsp");
        }
        
     view.forward(request,response);
    }
V

Poste o erro…

G

O erro pode estar nas aspas quando você esta criando as instrução para o banco de dados, tente substituir o Statment por PreparedStatment, facilita bastante na hora de criar instruções para o banco de dados. Na linha 15 da classe banco há uma aspas simples sem ser fechada

("+func.getCpf()+",’"+func.getEndereco()+",’"+func.getCep()+",’"+func.getTelefone()+",’"+func.getSalBruto()+")");

B

Concordo com o gpviani,

Na hora de inserir eu faria algo do tipo:

private static PreparedStatement pstm;

public void salvarFuncionario (Funcionario fun) throws SQLException {
  //logo a frente do nome da tabela vc coloca as colunas com o mesmo nome que vc criou no banco
  String atualizaSQL ="Insert INTO funcionarios (cpf,endereco,cep,telefone,salario) VALUES (?,?,?,?,?)" ;
  pstm = con.prepareStatement(atualizaSQL);
  pstm.setString(1,func.getCpf());
  pstm.setString(2,func.getEndereco());
  pstm.setString(3,func.getCep());
  pstm.setString(4,func.getTelefone());
  pstm.pstm.setDouble(5,func.getSalBruto());
  pstm.executeUpdate();
}

//Na pesquisa..
public List carregarFuncionario(int func) throws Exception{  
  List lista = new ArrayList();  
  String consultaSQL = "select * from funcionarios where funcionarioid = ? ";
  pstm = con.prepareStatement(consultaSQL);
  pstm.setInt(1,func);
  ResultSet rs = pstm.executeQuery();
  rs.beforeFirst();
  while (rs.next()) {
      lista.add(objFuncionario(rs));
   }
   return lista;
}  

private Ocorrencia objFuncionario(ResultSet rs) throws SQLException {
       //mesmo nome das colunas do banco na hora de dar o get..
   return new Funcionario(rs.getInt("funcionarioid"),
   rs.getString("cpf"),
   rs.getString("endereco"),
   rs.getString("cep"),
   rs.getString("telefone"),
   rs.getDouble("salario"));
  }

Não testei não…

[]'s

E

Obrigado vou testar

Criado 21 de abril de 2008
Ultima resposta 24 de abr. de 2008
Respostas 6
Participantes 4