Criando um método "verifica" usando java com BD MySQL

3 respostas
java
clicnet

Pessoal gostaria de criar um método que evitasse duplicidade na hora de fazer um cadastro.
A ideia é fazer um “SELECT” na minha tabela “pedidos” e pegar a coluna “status”, na hora de inserir um registro nessa tabela o status é definido como “pendente”, caso o usuário tente
realizar outro pedido em seguida, não será possível até que seu status seja alterado para “concluído”.
De que forma eu posso fazer um método “verifica”?

Segue abaixo meu método inserir:

public int inserir(Pedidos pedidos) {
     Connection conn = null;
     conn = getConnection();
     int sucesso = 0;
     
         PreparedStatement stmt = null;
         try {
             stmt = conn.prepareStatement("INSERT INTO "
                     + "pedidos (loja, status, comentario, quantidade, id_usuario) VALUES(?,?,?,?,?)");

             stmt.setString(1, pedidos.getLoja());
             stmt.setString(2, pedidos.getStatus());
             stmt.setString(3, pedidos.getComentario());
             stmt.setInt(4, pedidos.getQuantidade());
             stmt.setInt(5, pedidos.getId_usuario());
             
             sucesso = stmt.executeUpdate();

             if (sucesso > 0) {
                 System.out.println("PEDIDO REALIZADO COM SUCESSO!");
                 System.out.println("Status: " + pedidos.getStatus());
             }

         } catch (SQLException e) {
             System.out.println("ERRO AO REALIZAR O PEDIDO!");
         } finally {
             closeConnection(conn, (Statement) stmt);
         }
     return sucesso;
    }

3 Respostas

igomes

Recebe um pedido, busca o mesmo pelo id, trás a coluna status, verifica se é pendente, se for ai tem n opções depois
Lança uma exception, retorna null …

clicnet

Fiz dessa forma o método verifica, só que o retorno do id tá sendo sempre zero.

public int verificaStatus(String status) {
        int id = 0;
        Connection conn = null;
        ResultSet resultSet = null;
        PreparedStatement stmt = null;
        conn = getConnection();
        Usuario u = new Usuario();
        
        try {
            stmt = conn
                    .prepareStatement("SELECT pedidos.status=? pedidos.id_usuario=? "
                            + "FROM pedidos "
                            + "INNER JOIN usuario ON pedidos.id_usuario=usuario.id "
                            + "WHERE pedidos.id_usuario = '"+u.getId()+"'" 
                            + "AND pedidos.status =?" );
            stmt.setString(1, status);
            resultSet = stmt.executeQuery();
            if (resultSet.next()) {
                id = resultSet.getInt("id_usuario");
                return id;
            }
        } catch (SQLException e) {
        } finally {
            closeConnection(conn, (Statement) stmt, resultSet);
        }
        System.out.println("ID do Usuário: " + id);
        System.out.println("Saida u.getId(): " + u.getId());
        return id;
    }
clicnet

Segue o meu método inserir:

public int inserir(Pedidos pedidos) {
     Connection conn = null;
     conn = getConnection();
     int sucesso = 0;
     Usuario u = new Usuario();
     
    int pedidosRealizados = verificaStatus(pedidos.getStatus());   
    if (pedidosRealizados == 0) {
        PreparedStatement stmt = null;
        try {
             stmt = conn.prepareStatement ("INSERT INTO pedidos (loja, status, comentario, quantidade, id_usuario) "
                     + "VALUES(?,?,?,?,?)");

             stmt.setString(1, pedidos.getLoja());
             stmt.setString(2, pedidos.getStatus());
             stmt.setString(3, pedidos.getComentario());
             stmt.setInt(4, pedidos.getQuantidade());
             stmt.setInt(5, pedidos.getId_usuario());
             
             sucesso = stmt.executeUpdate();

            if (sucesso > 0) {
                 System.out.println("PEDIDO REALIZADO COM SUCESSO!");
                 System.out.println("Pedidos realizados = " + sucesso);
            }

        } catch (SQLException e) {
            System.out.println("ERRO AO REALIZAR O PEDIDO!");
            System.out.println("Variável sucesso = " + sucesso);
            System.out.println("Variável pedidos: "+ pedidos.getStatus());
        } finally {
             closeConnection(conn, (Statement) stmt);
        }
    } else {
        System.out.println("ERRO: EXISTE UM PEDIDO EM ABERTO");
        System.out.println("Variável sucesso = " + sucesso);
        closeConnection(conn);
    }
     return sucesso;
    }
Criado 27 de maio de 2016
Ultima resposta 2 de mar. de 2017
Respostas 3
Participantes 2