Erro no bbtalterar e bttexcluir

1 resposta
C

Tenho que fazer um projeto no netbeans que cadastre autores e seus livros, com botao ok, limpar, alterar e excluir e aparecer no sql. mas o alterar e excluir não funciona e nem manda parar o sql, alguém me ajuda?

package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import modelo.Autores;


public class PerAutores {
    private String autores;
    public void gravar(Autores autores){
        String sql="insert into autores(autores, codigo)values(?,?)";
        try{
            Connection conn=Conexao.getConexao();
            PreparedStatement pst=conn.prepareCall(sql);
            pst.setString(1,autores.getAutores());
            pst.setString(2,autores.getCodigo());
            pst.executeUpdate();
            } catch(Exception e){
            System.out.println("Erro ao gravar autores."+e.toString());
      }
    }
        public ArrayList<Autores> listar(){
            String sql="select*from Autores";
            try{
                Connection conn=Conexao.getConexao();
                PreparedStatement pst= conn.prepareStatement(sql);
                ResultSet rs= pst.executeQuery();
                ArrayList<Autores> Autores= new ArrayList<Autores>();
                Autores autores;
                while(rs.next()){
                   autores=new Autores();
                   autores.setAutores(rs.getString(1));
                   autores.setCodigo(rs.getString(2));
                   autores.add(autores);
                }
                return Autores;
            }
            catch (Exception e){
        return null;
            }
        }
        public void alterar( String autores, String codigo){


     String sql="update autores set Autores=? , Codigo=?";
    try{
            Connection conn=Conexao.getConexao();
            PreparedStatement pst=conn.prepareStatement(sql);
            pst.setString(1,autores);
            pst.setString(2,codigo);
            pst.executeUpdate();


    }catch(Exception e){

      System.out.println("Erro AO ALTERAR: "+e.toString());

    }
}

        public void Excluir(String autores) {

     String sql="delete from autores where Autores=?";
    try{
            Connection conn=Conexao.getConexao();
            PreparedStatement pst=conn.prepareStatement(sql);
             pst.setString(1,autores);
             pst.executeUpdate();


    }catch(Exception e){

      System.out.println("Erro AO EXCLUIR: "+e.toString());

    }  }}

1 Resposta

rafaelbortoletto

Creio que o seu problema do seu atualizar esteja no código do update pois, falta a condição where que indica qual autor deve ter as informações de registros atualizada. Tome cuidado quando for executar um update ou delete porque se você não especificar o where , ou seja, a condição que ele deve obedecer para mexer nos dados da tabela todos os registros da sua tabela serão afetados e isso pode trazer problemas sérios em um sistema real. Ficaria assim se eu entendi direito o que você quer fazer:

public void alterar( String autores, String codigo){


String sql="update autores set Autores=? where Codigo =? ";
try{
Connection conn=Conexao.getConexao();
PreparedStatement pst=conn.prepareStatement(sql);
pst.setString(1,autores);
pst.setString(2,codigo);
pst.executeUpdate();


}catch(Exception e){

System.out.println("Erro AO ALTERAR: "+e.toString());

}
}

No caso do Delete tem que observar o que é esse atributo autor do método excluir exatamente? Isso representa o Nome do Autor? Se for isso talvez seja melhor dizer que a classe autor possui um atributo do tipo String que representa o nome do autor. Além disso, verifique se o autor a ser excluído existe no banco de dados ou tente cadastrar um para excluir depois.

Criado 20 de abril de 2011
Ultima resposta 22 de abr. de 2011
Respostas 1
Participantes 2