How to prevent me from registering the same movie again

Asked

Viewed 62 times

0

I have this method:

test method of the package view location class

public int teste(){

        String selecao = cbFilmes.getSelectedItem().toString();
        String[] campos_filmes = selecao.replace(" ","").split("-"); // suponho que esteja separado por -
        System.out.println(campos_filmes[0]); // deve pegar o código
        int codigo = Integer.parseInt(campos_filmes[0]);
        java.sql.Connection conn = null;
        java.sql.PreparedStatement pstm = null;
        ResultSet rs = null;    
        boolean testee;
        try{

            conn = ConnectDB.conexaoDB();
            pstm = conn.prepareStatement("Select * From locacoes Where codigo_filme = '"+codigo+"'");           
            rs = pstm.executeQuery();
            if(rs.next()){
                JOptionPane.showMessageDialog(null, "Filme Já Locado!");
                tabbedPane.setSelectedIndex(0);
            }else{
        pstm.close();
            }

            ConnectDB.fecharConexao(conn);


        }catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Erro: "+ e);


    }
        return codigo;

    }

It does a validation to see if the movie is already leased, the following method is what sends the data to the location class of the control package

protected void salvar(){


    String selecao_filmes = cbFilmes.getSelectedItem().toString();
    String[] campos_filmes = selecao_filmes.replace(" ","").split("-"); // suponho que esteja separado por -
    System.out.println(campos_filmes[0]); // deve pegar o código
    int codigo_filme = teste();//Integer.parseInt(campos_filmes[0]);


     //System.out.println(selecao);

    String selecao_funcionario = cbFuncionario.getSelectedItem().toString();
    String[] campos_funcionarios = selecao_funcionario.replace(" ", "").split("-");
    System.out.println(campos_funcionarios[0]);
    int codigo_funcionario = Integer.parseInt(campos_funcionarios[0]);


    String selecao_cliente = cbClientes.getSelectedItem().toString();
    String [] campos_clientes = selecao_cliente.replace(" ", "").split("-");
    System.out.println(campos_clientes[0]);
    int codigo_cliente = Integer.parseInt(campos_clientes[0]);

    String data_locacao = dt_locacao.getText();
    String data_devolucao = dt_devolucao.getText();
 if(data_devolucao.equals("")){
        JOptionPane.showMessageDialog(null, "O campo Data de devolução é Obrigatório!");


    }

    Locacao locacao = new Locacao();
    locacao.setCodigo_cliente(codigo_cliente);
    locacao.setCodigo_funcionario(codigo_funcionario);
    locacao.setCodigo_filme(codigo_filme);
    locacao.setDt_locacao(data_locacao);
    locacao.setDt_devolucao(data_devolucao);

    control.Locacao manutencao = new control.Locacao();
    if(codigo_editar==0){
        manutencao.inserir(locacao);

    }else{
        manutencao.alterar(locacao);
    }

    tabbedPane.setSelectedIndex(1);



}

This is the method that saves in the bank:

public void inserir(dao.Locacao locacao) {

if(locacao != null){
    java.sql.Connection conn = null;

    try {
        conn = ConnectDB.conexaoDB();

        java.sql.PreparedStatement pstm;

        pstm = conn.prepareStatement(INSERT);

        pstm.setObject(1, locacao.getCodigo_filme());
        pstm.setObject(2, locacao.getCodigo_funcionario());
        pstm.setObject(3, locacao.getCodigo_cliente());
        pstm.setString(4, locacao.getDt_locacao());
        pstm.setString(5, locacao.getDt_devolucao());


        // Envia para o banco de dados
        Boolean teste;
        teste = pstm.execute();

        // Validar inserção no banco de dados
        if (!teste) {
            JOptionPane.showMessageDialog(null, "Locação cadastrada com sucesso!");

        } else {
            JOptionPane.showMessageDialog(null, "Erro ao cadastrar a Locação!");

        }

        // Fecha a conexão com o banco de dados
        ConnectDB.fecharConexao(conn);

    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, "Erro ao cadastrar a locacao!"+e.getMessage());

    }


}}

My question is the following, as I would to use the test method, making it, if the movie is leased, when clicking the save button, I prevent the user from saving, through the test method, if I was not very clear, ask me for more information, but please help me!.

This is the save button:

    JButton btnSalvar = new JButton("Salvar");
    btnSalvar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            salvar();



        }
    });

1 answer

0

Hello, I think I understand what you mean... Do you need a validation right? Extract

try{

        conn = ConnectDB.conexaoDB();
        pstm = conn.prepareStatement("Select * From locacoes Where codigo_filme = '"+codigo+"'");           
        rs = pstm.executeQuery();
        if(rs.next()){
            JOptionPane.showMessageDialog(null, "Filme Já Locado!");
            tabbedPane.setSelectedIndex(0);
        }else{
    pstm.close();
        }

        ConnectDB.fecharConexao(conn);


    }catch(SQLException e){
        JOptionPane.showMessageDialog(null, "Erro: "+ e);


}

for a method that takes the code as a parameter and has a Boolean return. So when it returns true you call your save method on the button.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.