Problemas no UPDATE();

9 respostas
jean.ufam

Desculpem, eu não sei fazer pra deixar de um jeito que vocês possam me ajudar.

public frmUpdateUsuario(java.awt.Frame parent, boolean modal, UsuariosDAO dao, PUsuarios frame, Usuario usuario) {
        super(parent, modal);
        this.dao = dao;
        this.frame = frame;
        this.usuario = usuario;
        initComponents();
        loadInitialComboData();
        loadUsuarioUpdated();
    }
    private void btOKActionPerformed(java.awt.event.ActionEvent evt) {                                     
        try {
            usuario.setNOME(tfNome.getText());
            usuario.setUSERNAME(tfUsername.getText());
            usuario.setSENHA(tfSenha.getText());
            usuario.setTIPO(cmbTipoUsuario.getSelectedItem().toString());
            usuario.setDTCRIADO(new java.util.Date(Calendar.getInstance().getTimeInMillis()));
            usuario.setDEPTO((Departamento) cmbDepto.getSelectedItem());
            dao.updateUsuarios(usuario);
            frame.loadInitialData();
        } catch (Exception ex) {
            ex.printStackTrace();
            JOptionPane.showMessageDialog(this, "Erro ao Adicionar Usuario", "Error", JOptionPane.ERROR_MESSAGE);
            return;
        }
        setVisible(false);
    }                                    

    private void loadInitialComboData() {
        try {
            //COMBO-DEPARTAMENTO
            DepartamentosDAO dptDAO = new DepartamentosDAO();
            Vector<Departamento> depto = new Vector<Departamento>(dptDAO.getAllDepartamentos());
            DefaultComboBoxModel cmbDpt = new DefaultComboBoxModel(depto);
            cmbDepto.setModel(cmbDpt);
        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(this, "Error loading the owners list");
        }
    }
    private void loadUsuarioUpdated() {
        tfNome.setText(usuario.getNOME());
        tfUsername.setText(usuario.getUSERNAME());
        tfSenha.setText(usuario.getSENHA());
        cmbTipoUsuario.setSelectedItem(usuario.getTIPO().toString());
        cmbDepto.setSelectedItem(usuario.getDEPTO());
    }

Agora vem o DAO.

public int addChamados(Chamado chms) throws SQLException {
        chms.setID(getNextId("CHAMADOS"));
        String query = "INSERT INTO HELPDESK.CHAMADOS("
                + "ID, "
                + "DTABERTURA, "
                + "FUNCIONARIO, "
                + "RAMAL, "
                + "STATUS, "
                + "DESCRICAO, "
                + "SOLUCOES, "
                + "DEPARTAMENTOS_ID,"
                + "PROBLEMAS_ID,"
                + "USUARIOS_ID) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

        executeCommand(query,
                chms.getID(),
                chms.getDTABERTURA(),
                chms.getFUNCIONARIO(),
                chms.getRAMAL(),
                chms.getSTATUS(),
                chms.getDESCRICAO(),
                chms.getSOLUCOES(),
                chms.getDEPARTAMENTO_ID().getID(),
                chms.getPROBLEMAS_ID().getID(),
                chms.getUSUARIOS_ID().getID());

        return chms.getID();
    }

    public void removeChamados(int idChm) throws SQLException {
        executeCommand("DELETE FROM HELPDESK.CHAMADOS WHERE ID = ?", idChm);
    }

    public void updateChamados(Chamado chms) throws SQLException {
        String query = "UPDATE HELPDESK.CHAMADOS SET "
                + "DTABERTURA = ?, "
                + "FUNCIONARIO = ?, "
                + "RAMAL = ?, "
                + "STATUS = ?, "
                + "DESCRICAO = ?, "
                + "SOLUCOES = ?, "
                + "DEPARTAMENTOS_ID = ?, "
                + "PROBLEMAS_ID = ?,"
                + "USUARIOS_ID = ? WHERE ID = ?";
        executeCommand(query,
                chms.getDTABERTURA(),
                chms.getFUNCIONARIO(),
                chms.getRAMAL(),
                chms.getSTATUS(),
                chms.getDESCRICAO(),
                chms.getSOLUCOES(),
                chms.getDEPARTAMENTO_ID().getID(),
                chms.getPROBLEMAS_ID().getID(),
                chms.getUSUARIOS_ID().getID(),
                chms.getID());
    }

    public Chamado getChamado(int idChm) throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM HELPDESK.CHAMADOS WHERE ID = ?", idChm);
        Chamado chms = null;
        if (rs.next()) {
            chms = populateChamadoInfo(rs);
        }
        rs.close();
        return chms;
    }

    //TIPOS DE PESQUISAS
    public List<Chamado> getAllChamados() throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM HELPDESK.CHAMADOS ORDER BY ID");
        List<Chamado> toReturn = new LinkedList<Chamado>();
        while (rs.next()) {
            toReturn.add(populateChamadoInfo(rs));
        }
        rs.close();
        return toReturn;
    }

    public List<Chamado> getAllChamadosOPEN() throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM HELPDESK.CHAMADOS WHERE STATUS = 'Aberto'");
        List<Chamado> toReturn = new LinkedList<Chamado>();
        while (rs.next()) {
            toReturn.add(populateChamadoInfo(rs));
        }
        rs.close();
        return toReturn;
    }

    public List<Chamado> getAllChamadosWAITING() throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM HELPDESK.CHAMADOS WHERE STATUS = 'Aberto'");
        List<Chamado> toReturn = new LinkedList<Chamado>();
        while (rs.next()) {
            toReturn.add(populateChamadoInfo(rs));
        }
        rs.close();
        return toReturn;
    }

    public List<Chamado> getAllChamadosCLOSE() throws SQLException {
        ResultSet rs = executeQuery("SELECT * FROM HELPDESK.CHAMADOS WHERE STATUS = 'Aberto'");
        List<Chamado> toReturn = new LinkedList<Chamado>();
        while (rs.next()) {
            toReturn.add(populateChamadoInfo(rs));
        }
        rs.close();
        return toReturn;
    }

    //FUNÇÃO POPULA
    public static Chamado populateChamadoInfo(ResultSet rs) throws SQLException {

        UsuariosDAO userDAO = new UsuariosDAO();
        ProblemasDAO prbDAO = new ProblemasDAO();
        DepartamentosDAO dptDAO = new DepartamentosDAO();

        Chamado toReturn = new Chamado();

        toReturn.setID(rs.getInt("ID"));
        toReturn.setDTABERTURA(rs.getDate("DTABERTURA"));
        toReturn.setFUNCIONARIO(rs.getString("FUNCIONARIO"));
        toReturn.setRAMAL(rs.getString("RAMAL"));
        toReturn.setSTATUS(rs.getString("STATUS"));
        toReturn.setDESCRICAO(rs.getString("DESCRICAO"));
        toReturn.setSOLUCOES(rs.getString("SOLUCOES"));
        toReturn.setDEPARTAMENTO_ID(dptDAO.getDepartamento(rs.getInt("DEPARTAMENTOS_ID")));
        toReturn.setPROBLEMAS_ID(prbDAO.getProblema(rs.getInt("PROBLEMAS_ID")));
        toReturn.setUSUARIOS_ID(userDAO.getUsuario(rs.getInt("USUARIOS_ID")));
        
        return toReturn;
    }

Então, o que eu acabei por descobrir foi o seguinte, na hora em que eu vou fazer o UPDATE do troço, ele nao carrega a coluna Tecnico, Departamento, Problema.

Já consegui visualizar isso…

agora realmente se alguem puder me ajudar … fico agradecido.

vou tentar colocar a img. Caso não apareça, desculpem !

9 Respostas

rafaelviny

leia as regras do forum :x

diegodtsa

Amigo Coloque seu Código como determina o forum!!!
Assim seu código fica mais facil de visualizar!!!

C

Depois de fazer o que os amigos disseram, qual erro/exception/mensagem que dá?

jean.ufam

Poisé, de tanto fussar a parada, ele nao dá a msg, porem nao atualiza.

já tow com dor de cabeça.

C

kra, pelo q vi por cima seu código, eu entendi, que vc lê os dados desse frame de edição, faz o update no banco MAS, vc não atualiza a JTable ai do seu frame principal.
Pelo q vi por cima, não tem rotina pra atualizar a tabela do frame, só do banco de dados.
Você checou se no banco a modificação é feita?

L

ja tentou fazer o update diretamento no seu banco.

bom não seu qual tipo de banco esta usando, mas conforme dito, faça algo do tipo e veja se esta certo sua query ou entenda o conceito do amigo disse à cima.

um exemplo rádido de forma diferente

exemplo.....

public boolean alterar(ProdutoFornecedorTO to){

		boolean sucesso = true;
		try { 
			con = DAOConexao.getConn(); 
			String sql = " Update tb_ProdutoFornecedor set CodigoImprFornecedor=? Nome=?, Endereco=?, Telefone=?, Cidade=? where CodigoImprFornecedor =?";
			pstm = con.prepareStatement(sql);

			//set todos os campos
			pstm.setString(1,to.getNome());
			pstm.setString(3,to.getTelefone());
			pstm.setString(4,to.getCidade());
			pstm.setString(2,to.getEndereco());
			
			pstm.executeUpdate();
			
		}catch(Exception e){
			System.out.println(e.toString());
			sucesso = false;
		}finally{
			try{
				//pstm.close(); 
				//con.close();
			}catch(Exception e){
			}
		}
		return sucesso;
	}
jean.ufam

cubo:
kra, pelo q vi por cima seu código, eu entendi, que vc lê os dados desse frame de edição, faz o update no banco MAS, vc não atualiza a JTable ai do seu frame principal.
Pelo q vi por cima, não tem rotina pra atualizar a tabela do frame, só do banco de dados.
Você checou se no banco a modificação é feita?

Sim, eu chequei e nao atualiza nda, …
mas olha só,

a questao é … .quando eu passo por no construtor o load dos dados que eu faço no mysql … entao ele deveria carregar pra mim o combo do valor setado …

ou seja…

digamos que o valor que eu escolhi no banco, tipo seja, id = 12, nome = FULANO. NO entanto o que ta acontecendo é que quando eu chamo o [EDITAR_BUTTON], ele carrega pra mim os dados DEFAULT … ou seja… seta id = 1, nome = “doido”…

entende ele nao esta setando os dados do combo, mais ele tah carregando os dados…

isso eu nao sei porque, pois nos outros forms fiz igual e os outros estao funcionando.

Pra mim só pode ser coisa no bancooooo, vc concorda …

ou alguem mais tem alguma outra opinão…

jean.ufam

Pessoal acabei de verificar aki, e ele esta atualizando sim. Dei uma modificada. Porem o unico problema agora é na hora em que eu chamo o editar

ele nao seta msmo os campos … aparentemente o codigo esta correto, porem se estivesse msmo nao estaria com esse erro !!

mais mesmo assim, muito obrigado, 1) Pela chamada pra eu melhorar o meu post, 2) por pequenas, mas eficientes soluções !!!

C

boa!

muda sua assinatura

[T.I.] > Web Development

Computação > TI ou qualquer outra coisa :wink:

haeuaheuaheuea

Sou Cientista da computação tbm

:smiley:

Criado 8 de maio de 2011
Ultima resposta 10 de mai. de 2011
Respostas 9
Participantes 5