botão/método editar[OK]

5 respostas
ArianeRebellato

o que há de errado com o meu código? eu quero que ao escolher o item que será editado o JDialog já venha com as informações que ele já possuir…

private void btEditarCampus1ActionPerformed(java.awt.event.ActionEvent evt) {                                                
    Campi c = (Campi) cmbCampus.getItemAt(cmbCampus.getSelectedIndex());
    CampiJDialog tela = new CampiJDialog(this, true);
    tela.setCampus(c);
    tela.setVisible(true);
   // c = tela.getCampus();
    


    if (c != null) {
        cDAO.atualizar(c);
        this.carregarCampus();
    }
                JOptionPane.showMessageDialog(rootPane, "Campus editado com sucesso!");



}

o meu método atualizar()…

public void atualizar(Campi c){
        String sql = "UPDATE CAMPUS SET nome = '" + c.getNome() + "'" +
                ", telefone = " + c.getTelefone() +
                ", cidade = '" + c.getCidade() + "'" +
                ", estado = '" + c.getEstado() +"'" +
                " WHERE codigo = " + c.getCodigo();
        bd.conecta();
        try{
            comando = bd.getConexao().createStatement();
            comando.execute(sql);
            comando.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
        bd.desconecta();        
    }

Obrigada!!

5 Respostas

ArianeRebellato

um for?

ArianeRebellato

esquece… :oops: já deu…ehehe
eu tava chamando td pelo botão…criei os métodos e tá td funcionando…

private void leCampus() {

        txtNomeCampus.setText(campus.getNome());
        txtTelefone.setText(campus.getTelefone());
        txtCidade.setText(campus.getCidade());
        txtEstado.setText(campus.getEstado());

    }

    private boolean escreveCampus() {
        campus.setNome(txtNomeCampus.getText());
        campus.setTelefone(txtTelefone.getText());
        campus.setCidade(txtCidade.getText());
        campus.setEstado(txtEstado.getText());
        return true;
    }

td mundo viaja assim as vezes ou eu me supero?

ViniGodoy

Oi.

Use PreparedStatement para fazer suas consultas. Ele evita diversos problemas;

Veja um exemplo:

public void atualizar(Campi c){
   String sql = "UPDATE CAMPUS SET nome=?, telefone=?, cidade=?, estado=? WHERE codigo=?";
   bd.conecta();
   try{
      PreparedStatement stmt = bd.getConexao().prepareStatement(sql);

      stmt.setString(1, c.getNome());
      stmt.setInt(2, c.getTelefone());
      stmt.setString(3, c.getCidade());
      stmt.setString(4, c.getEstado());
      stmt.setInt(5, c.getCodigo());

      stmt.execute();
      stmt.close();
   }catch (SQLException e){
      e.printStackTrace();
   }
   finally {
      bd.desconecta();        
   }
}

Note que a legibilidade do SQL ficou muito melhor. Também não precisei me preocupar em colocar aspas simples.
Se você quiser ver como seu programa falha, tente colocar um nome usando as aspas simples, como "Jeffrey's".

Outra vantagem do PreparedStatement é na hora de trabalhar com datas. Ele mesmo se encarrega em saber qual é o formato certo da data no banco.

Outra coisa, notei que seu telefone é um int. Cuidado, que alguns telefones comerciais tem números como "*222". E isso não pode ser representado por um int. Normalmente usamos strings para representar telefones.

ViniGodoy

Todo mundo.
Até eu, com 15 anos de profissão, como bola assim as vezes…

ArianeRebellato

aa…legal…nos próximos vou usar sim…já tinha visto o PreparedStatement mas acabei não usando pq deu uns erros e eu não conheço mt bem a sintaxe…mas vou estudar pro próximo…

Valeu pelas dicas!!

Abraços…

Criado 24 de outubro de 2010
Ultima resposta 25 de out. de 2010
Respostas 5
Participantes 2