Problema em alterar dado no BD

2 respostas
S

bom tenho o seguinte codigo

pega os dados dos componente i colocam na variavel Livro l

private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                          
            Livro l = new Livro();
            String titulo = textTitulo.getText();

            l.setIsbn(textISBN.getText());
            l.setTitulo(textTitulo.getText());
            l.setAutor(textAutor.getText());
            l.setEditora(textEditora.getText());
            l.setCidadePublicacao(textCidadePublic.getText());
            l.setAnoPublicacao(textAnoPublic.getText());
            l.setQuantidadeEstoque(Integer.parseInt(textQuantLivro.getText()));

            LivroDAO lDAO = new LivroDAO();

            if (lDAO.alterar(l, titulo)) {
            JOptionPane.showMessageDialog(this, "Livro Cadastrado com Sucesso!");
        } else {
            JOptionPane.showMessageDialog(this, "um erro ocorreu!");
        }
    }

esse eh u metodo q eh chamado para alterar o dado no Banco:

public boolean alterar(Livro l, String titulo){
            String sql = String.format("UPDATE Livro set Isbn = '" + l.getIsbn() + "'," + "titulo = '" + l.getTitulo() + "'," +
                                       "Autor = '" + l.getAutor() + "'," + "Editora = '" + l.getEditora() + "'," +
                                       "cid_pub = '" + l.getCidadePublicacao() + "'," +
                                       "ano_pub = '" + l.getAnoPublicacao() + "'," +"quant_livro = '" + l.getQuantidadeEstoque() + "'" +
                                       "where titulo = '" + titulo + "'");
            System.out.println(l.getTitulo());
            try {
               Connection con = ConnectDB.createConnection();
               Statement stmt = con.createStatement();
               int registro = stmt.executeUpdate(sql);
               if (registro != 0) JOptionPane.showMessageDialog(null,"Dados Alterados!");
               else JOptionPane.showMessageDialog(null,"Dados Não Alterados!");
               stmt.close();
               con.close();
               return true;
           }catch(SQLException sqlEx) {
               System.out.println(sqlEx);
               return false;
           }catch(Exception ex) {
               return false;
        }
      }

o problema eh que com estes codigos acima eu consigo alterar todos os campo com exceçao do campo "titulo"

si eu colocar pra alterar o titulo ele cai aki

else JOptionPane.showMessageDialog(null,"Dados Não Alterados!");

estou parado ai faz um tempim =P
alguem pode mi ajudar?

vlw

2 Respostas

romarcio

Não sei qual banco vc está usando, mas tem uns bancos que são case sensitive nos nomes das colunas, então tem que ver também se o que vc pega em textTitulo.getText() também não terá problemas de case sensitive.

Outra coisa, quando vc passa por parametro no metodo alterar(l, String Titilo), não precisa. Faz só alterar(l).

O titulo vc tem e pega com l.getTitulo(), para adicionar no update e também fazer o where titulo = l.getTitulo()

S

estou usando mysql

acho q ele num eh case sensitive

vlw

Criado 15 de julho de 2010
Ultima resposta 15 de jul. de 2010
Respostas 2
Participantes 2