Jump to content

Não consigo fazer o CRUD funcionar


Wenderson Lisboa
Go to solution Solved by Wenderson Lisboa,

Recommended Posts

Boa noite amigos, venho mais uma vez humildemente pedir vossa ajuda, estou implementando um pequeno projeto e esbarrei nessa dificuldade, não consigo salvar, atualizar, excluir nem limpar os campos, por favor peço que me ajudem a descobrir esse erro. De já meu muito obrigado.

//Classe Menu

import java.awt.EventQueue;

import javax.swing.JFrame;

import java.awt.Panel;

import javax.swing.BoxLayout;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

import Conexao.DAOPessoas;

import Conexao.Pessoas;

import javax.swing.JMenuBar;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

import javax.swing.JButton;

import java.awt.event.ActionListener;

import java.util.List;

import java.awt.event.ActionEvent;



public class Menu {



     private JFrame frame;

     private JTable table;

     private JTextField txtDigiteONome;

     private DAOPessoas dao;

     /**

      * Launch the application.

      */

     public static void main(String[] args) {

         EventQueue.invokeLater(new Runnable() {

              public void run() {

                   try {

                        Menu window = new Menu();

                        window.frame.setVisible(true);

                   } catch (NullPointerException e) {

                        e.printStackTrace();

                   } catch (Exception e) {

                        // TODO Auto-generated catch block

                        e.printStackTrace();

                   }

              }

         });

     }



     /**

      * Create the application.

      * @throws Exception

      */

     public Menu() throws Exception{

         try {

         dao = new DAOPessoas();

         initialize();

         }catch(Exception e) {

              JOptionPane.showMessageDialog(null, this,"[ERRO] "+e.getMessage(), 0, null);

         }

     }



     /**

      * Initialize the contents of the frame.

      */

     private void initialize() {

        

         frame = new JFrame();

         frame.setBounds(100, 100, 600, 450);

         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.X_AXIS));

         frame.setLocationRelativeTo(null);

         frame.setResizable(true);

        

         Panel panel = new Panel();

         frame.getContentPane().add(panel);

         panel.setLayout(null);

        

         table = new JTable();

         table.setBounds(278, 18, 0, 0);

         panel.add(table);

        

         JMenuBar menuBar = new JMenuBar();

         frame.setJMenuBar(menuBar);

        

         JButton btnNewButton_1 = new JButton("CADASTRAR");

         btnNewButton_1.addActionListener(new ActionListener() {

              public void actionPerformed(ActionEvent e){

                   try {

                   Cadastro cadastroForm = new Cadastro();

                cadastroForm.setVisible(true);

                   }catch(Exception ex) {

                        JOptionPane.showMessageDialog(btnNewButton_1, this,"[ERRO] "+ex.getMessage(), 0, null);

                   }

              }

         });

         menuBar.add(btnNewButton_1);

        

         txtDigiteONome = new JTextField();

         txtDigiteONome.setToolTipText("");

         menuBar.add(txtDigiteONome);

         txtDigiteONome.setColumns(10);

        

         JButton btnNewButton = new JButton("BUSCAR");

         btnNewButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                carregarDados(txtDigiteONome.getText());

            }

        });

         menuBar.add(btnNewButton);

        

         // JTable e JScrollPane

        table = new JTable();

        JScrollPane scrollPane = new JScrollPane(table);

        scrollPane.setBounds(10, 50, 560, 300); // Ajuste as dimensões conforme necessário

        panel.add(scrollPane);



        carregarDados("");

     }

      public void carregarDados(String nome) {

          

             List<Pessoas> lista = dao.listar();

             String[] colunas = {"ID","Nome", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};

             DefaultTableModel modelo = new DefaultTableModel(colunas, 0);



             for (Pessoas p : lista) {

               if (nome.isEmpty() || p.getNome().toUpperCase().contains(nome.toUpperCase())) {

                 Object[] linha = {

                     p.getId(),

                    p.getNome(),

                     p.getAgosto(),

                     p.getSetembro(),

                     p.getOutubro(),

                     p.getNovembro(),

                     p.getDezembro()

                 };

                 modelo.addRow(linha);

             }

             table.setModel(modelo);

         }

      }

}



//Classe Cadastro

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.awt.Insets;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

import Conexao.DAOPessoas;

import Conexao.Pessoas;



public class Cadastro extends JFrame implements ActionListener{

    

     /**

      *

      */

     private static final long serialVersionUID = 1L;

     private JLabel lbID;

     private JTextField txtID;

     private JLabel lbNome;

     private JTextField txtNome;

     private JLabel lbAgosto;

     private JCheckBox cbAgosto;

     private JLabel lbSetembro;

     private JCheckBox cbSetembro;

     private JLabel lbOutubro;

     private JCheckBox cbOutubro;

     private JLabel lbNovembro;

     private JCheckBox cbNovembro;

     private JLabel lbDezembro;

     private JCheckBox cbDezembro;

     private JButton btSalvar;

     private JButton btAtualizar;

     private JButton btExcluir;

     private JButton btLimpar;

    

     private DAOPessoas dao;

    

     public Cadastro() throws Exception {

         try {

         dao = new DAOPessoas();

         //Configuração visual da rela

        setTitle("Cadastro dos Esponjinhas");

        setSize(350, 350);

        setLayout(new GridBagLayout());

        setResizable(false);

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        setLocationRelativeTo(null); // Centraliza a janela na tela

       

        //Configurando o Layout "x" e "y" do formulário

        GridBagConstraints gbc = new GridBagConstraints();

         Insets margens = new Insets(4,3,4,3);

        

         JLabel lbID = new JLabel("ID");

        gbc.gridx = 0;

         gbc.gridy = 0;

         gbc.anchor = GridBagConstraints.WEST; // Alinha à esquerda

         gbc.insets = margens;

        add(lbID,gbc);

       

        JTextField txtID = new JTextField(2);

        txtID.setEnabled(false);

        gbc.gridx = 1;

         gbc.gridy = 0;

         gbc.fill = GridBagConstraints.HORIZONTAL; // Preenche horizontalmente

         gbc.insets = margens;

        add(txtID, gbc);

       

        JLabel lbNome = new JLabel("Nome");

        gbc.gridx = 0;

         gbc.gridy = 1;

         gbc.insets = margens;

        add(lbNome, gbc);

       

        JTextField txtNome = new JTextField();

        gbc.gridx = 0;

         gbc.gridy = 2;

         gbc.gridwidth = 3; // Ocupa duas colunas

         gbc.fill = GridBagConstraints.HORIZONTAL; // Preenche horizontalmente

         gbc.insets = margens;

        add(txtNome, gbc);

       

        JLabel lbAgosto = new JLabel("Agosto");

        gbc.gridx = 0;

         gbc.gridy = 3;

         gbc.gridwidth = 1; // Restaura gridwidth para 1

         gbc.fill = GridBagConstraints.NONE; // Restaura fill para NONE

         gbc.insets = margens;

        add(lbAgosto, gbc);

       

        JCheckBox cbAgosto = new JCheckBox();

        cbAgosto.setSelected(false);

        gbc.gridx = 1;

         gbc.gridy = 3;

         gbc.insets = margens;

        add(cbAgosto, gbc);

       

        JLabel lbSetembro = new JLabel("Setembro");

        gbc.gridx = 0;

         gbc.gridy = 4;

         gbc.insets = margens;

        add(lbSetembro, gbc);

       

        JCheckBox cbSetembro = new JCheckBox();

        cbSetembro.setSelected(false);

        gbc.gridx = 1;

         gbc.gridy = 4;

         gbc.insets = margens;

        add(cbSetembro, gbc);

       

        JLabel lbOutubro = new JLabel("Outubro");

        gbc.gridx = 0;

         gbc.gridy = 5;

         gbc.insets = margens;

        add(lbOutubro, gbc);

       

        JCheckBox cbOutubro = new JCheckBox();

        cbOutubro.setSelected(false);

        gbc.gridx = 1;

         gbc.gridy = 5;

         gbc.insets = margens;

        add(cbOutubro, gbc);

       

        JLabel lbNovembro = new JLabel("Novembro");

        gbc.gridx = 0;

         gbc.gridy = 6;

         gbc.insets = margens;

        add(lbNovembro, gbc);

       

        JCheckBox cbNovembro = new JCheckBox();

        cbNovembro.setSelected(false);

        gbc.gridx = 1;

         gbc.gridy = 6;

         gbc.insets = margens;

        add(cbNovembro, gbc);

       

        JLabel lbDezembro = new JLabel("Dezembro");

        gbc.gridx = 0;

         gbc.gridy = 7;

         gbc.insets = margens;

        add(lbDezembro, gbc);

       

        JCheckBox cbDezembro = new JCheckBox();

        cbDezembro.setSelected(false);

        gbc.gridx = 1;

         gbc.gridy = 7;

         gbc.insets = margens;

        add(cbDezembro, gbc);

        

        JButton btSalvar = new JButton("Salvar");

        gbc.gridx = 0;

         gbc.gridy = 8;

         gbc.insets = margens;

        add(btSalvar, gbc);

       

        JButton btAtualizar = new JButton("Atualizar");

        gbc.gridx = 1;

         gbc.gridy = 8;

         gbc.insets = margens;

        add(btAtualizar, gbc);

       

        JButton btExcluir = new JButton("Excluir");

        gbc.gridx = 2;

         gbc.gridy = 8;

         gbc.insets = margens;

        add(btExcluir, gbc);

       

        JButton btLimpar = new JButton("Limpar");

        gbc.gridx = 3;

         gbc.gridy = 8;

         gbc.insets = margens;

        add(btLimpar,gbc);

       

        btSalvar.addActionListener(this);

        btAtualizar.addActionListener(this);

        btExcluir.addActionListener(this);

        btLimpar.addActionListener(this);

       

        setVisible(true);

         }catch(Exception e) {

              JOptionPane.showMessageDialog(this,e.getMessage());

         }

     }

    

     public void salvar() {

        try{

            Pessoas pessoas= new Pessoas();

            //Verifica se o campo está vaisio

            String nome = txtNome.getText();

            if (nome.isEmpty()) {

                JOptionPane.showMessageDialog(this, "O campo Nome não pode estar vazio.", "Erro de Validação", JOptionPane.ERROR_MESSAGE);

                return;

            }

           

            pessoas.setNome(nome);

            pessoas.setAgosto(cbAgosto.isSelected());

            pessoas.setSetembro(cbSetembro.isSelected());

            pessoas.setOutubro(cbOutubro.isSelected());

            pessoas.setNovembro(cbNovembro.isSelected());

            pessoas.setDezembro(cbDezembro.isSelected());

           

            dao.salvar(pessoas);

            

            JOptionPane.showMessageDialog(this,"Salvo com sucesso!");

        }catch(Exception e){

            JOptionPane.showMessageDialog(this,"Erro ao Salvar! "+e.getMessage());

        }

    }

   

    public void excluir(){

        try{

         

            Pessoas pessoas = new Pessoas();

           

            pessoas.setNome(txtNome.getText());

           

            dao.excluir(pessoas);

            JOptionPane.showMessageDialog(this,"Excluido com sucesso!");

        }catch(Exception e){

            JOptionPane.showMessageDialog(this,"Exclusão mal sucedida!");

        }

    }

   

    public void atualizar(){

        try{

            Pessoas pessoas = new Pessoas();

           

            pessoas.setId(Integer.parseInt(txtID.getText()));

            pessoas.setNome(txtNome.getText());

            pessoas.setAgosto(cbAgosto.isSelected());

            pessoas.setSetembro(cbSetembro.isSelected());

            pessoas.setOutubro(cbOutubro.isSelected());

            pessoas.setNovembro(cbNovembro.isSelected());

            pessoas.setDezembro(cbDezembro.isSelected());

           

            dao.atualizar(pessoas);

            JOptionPane.showMessageDialog(this,"Atualizado com sucesso!");

        }catch(Exception e){

            JOptionPane.showMessageDialog(this,"Erro ao Atualizar!");

        }

    }

   

    public void limpar(){

   

        txtID.setText("");

        txtNome.setText("");

        cbAgosto.setSelected(false);

        cbSetembro.setSelected(false);

        cbOutubro.setSelected(false);

        cbNovembro.setSelected(false);

        cbDezembro.setSelected(false);

    }

   

    public void actionPerformed(ActionEvent pessoas){

     if (pessoas.getSource() == btSalvar) {

             salvar();

         } else if (pessoas.getSource() == btAtualizar) {

             atualizar();

         } else if (pessoas.getSource() == btExcluir) {

             excluir();

         } else if (pessoas.getSource() == btLimpar) {

             limpar();

         }

    }

    

}



//Classe DAOPessoas

package Conexao;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JOptionPane;



public class DAOPessoas {

    

     private Connection con = null;

     private PreparedStatement stmt = null;

     private ResultSet rs = null;

    

     public DAOPessoas() throws SQLException, ClassNotFoundException{

         try {

             

              Class.forName("com.mysql.cj.jdbc.Driver");

             con = DriverManager.getConnection("jdbc:mysql://localhost:3306/confra","root","");

              }catch(SQLException e) {

                   JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);

              }catch (ClassNotFoundException ex) {

                 System.out.println("Erro: Não encontrou o driver do BD.");

                 ex.printStackTrace();

             }

     }

        public void desconectar(Connection con) throws SQLException{

            try {

                if (con != null && !con.isClosed()) {

                    con.close();

                    System.out.println("Desconectou do banco de dados.");

                }

            } catch (SQLException ex) {

                System.out.println("Não conseguiu desconectar do BD.");

                ex.printStackTrace();

            }

        }

       

     public void salvar(Pessoas pessoas) throws Exception{

         try {

        stmt = con.prepareStatement("INSERT INTO PESSOAS(NOME, AGOSTO, SETEMBRO, OUTUBRO, NOVEMBRO, DEZEMBRO) VALUES(?,?,?,?,?,?)");  

       

        stmt.setString(1, pessoas.getNome());

        stmt.setBoolean(2, pessoas.getAgosto());

        stmt.setBoolean(3, pessoas.getSetembro());

        stmt.setBoolean(4, pessoas.getOutubro());

        stmt.setBoolean(5, pessoas.getNovembro());

        stmt.setBoolean(6, pessoas.getDezembro());

       

        stmt.executeUpdate();

         }finally {

            if (stmt != null) {

                stmt.close();

            }

            if (con != null) {

                desconectar(con);

            }

        }

    }

     public void atualizar(Pessoas pessoas) throws Exception{

         try {

             stmt = con.prepareStatement("UPDATE PESSOAS SET NOME = ?, AGOSTO = ?, SETEMBRO = ?, OUTUBRO = ?, NOVEMBRO = ?, DEZEMBRO = ? WHERE ID = ?");

            

             stmt.setString(1, pessoas.getNome());

             stmt.setBoolean(2, pessoas.getAgosto());

             stmt.setBoolean(3, pessoas.getSetembro());

             stmt.setBoolean(4, pessoas.getOutubro());

             stmt.setBoolean(5, pessoas.getNovembro());

             stmt.setBoolean(6, pessoas.getDezembro());

             stmt.setInt(7, pessoas.getId());

            

             stmt.executeUpdate();

         }finally {

            if (stmt != null) {

                stmt.close();

            }

            if (con != null) {

                desconectar(con);

            }

        }

    }

   

    public void excluir(Pessoas pessoas)throws Exception{

    try {

             stmt = con.prepareStatement("DELETE FROM PESSOAS WHERE NOME = ?");

        

             stmt.setString(1,pessoas.getNome());

            

             stmt.executeUpdate();

    }finally {

            if (stmt != null) {

                stmt.close();

            }

            if (con != null) {

                desconectar(con);

            }

        }

    }

   

    public List<Pessoas> listar() {

   

        List<Pessoas> lista = new ArrayList<>();

        try {

            String sql = "SELECT * FROM PESSOAS";

            stmt = con.prepareStatement(sql);

            rs = stmt.executeQuery();



            while (rs.next()) {

                Pessoas pessoa = new Pessoas();

                pessoa.setId(rs.getInt("ID"));

                pessoa.setNome(rs.getString("NOME"));

                pessoa.setAgosto(rs.getBoolean("AGOSTO"));

                pessoa.setSetembro(rs.getBoolean("SETEMBRO"));

                pessoa.setOutubro(rs.getBoolean("OUTUBRO"));

                pessoa.setNovembro(rs.getBoolean("NOVEMBRO"));

                pessoa.setDezembro(rs.getBoolean("DEZEMBRO"));

                lista.add(pessoa);

            }

        }catch (Exception e) {

                e.printStackTrace();

        } finally {

            try {

                if (rs != null) {

                    rs.close();

                }if (stmt != null) {

                    stmt.close();

                }if (con != null) {

                    desconectar(con);

                }

                 } catch (SQLException e) {

                     e.printStackTrace();

                 }

            }

        return lista;

        }

    }



//Classe Pessoas

package Conexao;



public class Pessoas {

    

     //Objetos da classe

     private int id;

     private String nome;

     private Boolean agosto;

     private Boolean setembro;

     private Boolean outubro;

     private Boolean novembro;

     private Boolean dezembro;

    

     //Getters e Setters

     public int getId() {

         return id;

     }

     public void setId(int id) {

         this.id = id;

     }

     public String getNome() {

         return nome;

     }

     public void setNome(String nome) {

         this.nome = nome;

     }

     public Boolean getAgosto() {

         return agosto;

     }

     public void setAgosto(Boolean agosto) {

         this.agosto = agosto;

     }

     public Boolean getSetembro() {

         return setembro;

     }

     public void setSetembro(Boolean setembro) {

         this.setembro = setembro;

     }

     public Boolean getOutubro() {

         return outubro;

     }

     public void setOutubro(Boolean outubro) {

         this.outubro = outubro;

     }

     public Boolean getNovembro() {

         return novembro;

     }

     public void setNovembro(Boolean novembro) {

         this.novembro = novembro;

     }

     public Boolean getDezembro() {

         return dezembro;

     }

     public void setDezembro(Boolean dezembro) {

         this.dezembro = dezembro;

     }

}

 

Link to comment
Share on other sites

Tens de ser mais concreto nas tuas dúvidas.
Despejar centenas de linhas de código a julgar que alguém as vai conseguir compreender para descobrir o teu problema não vai funcionar.

Quando dizes que não consegues, por exemplo, atualizar, isso quer dizer precisamente o quê?
Tens um erro de sintaxe no SQL?
Dá uma exceção no código?
Simplesmente executa o comando mas não faz o que devia?

Envia o que estás a fazer para um log, em particular os comandos de SQL e as exceções, para compreender o que se passa.
Agarra nos comenados de SQL e executa-os diretamente na base de dados para confirmar que estão corretos.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

  • Solution
Em 09/07/2024 às 05:46, M6 disse:

Tens de ser mais concreto nas tuas dúvidas.
Despejar centenas de linhas de código a julgar que alguém as vai conseguir compreender para descobrir o teu problema não vai funcionar.

Quando dizes que não consegues, por exemplo, atualizar, isso quer dizer precisamente o quê?
Tens um erro de sintaxe no SQL?
Dá uma exceção no código?
Simplesmente executa o comando mas não faz o que devia?

Envia o que estás a fazer para um log, em particular os comandos de SQL e as exceções, para compreender o que se passa.
Agarra nos comenados de SQL e executa-os diretamente na base de dados para confirmar que estão corretos.

Pessoa desculpas, a verdade é que quando enviei esse tópico já era 3:00 horas da manhã, estava muito cansado e acabei não pensando direito, mas já encontrei a solução.

 

Agradeço a todos que tiraram um tempo para me ajudar, obrigado.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.