Retorno de linhas em uma query

5 respostas
R

Bom dia senhores,abaixo estou postando uma classe que tem um crud nela.O que preciso é saber como identificar quando mandar deletar ou atualizar ou listar um produto, e não há este produto.

ex:delete from produto where id=1;
e se o codigo 1 não existir,como saberei?

/**
 * Classe,que implementa a interface Dao_Produto
 * implementando os metodos,está classe tem por finalidade
 * trabalhar com a tabela produtos
 */
package br.com.oriom.CotacaoWeb.dao;

import br.com.oriom.CotacaoWeb.*;
import br.com.oriom.CotacaoWeb.bean.Produto_Bean;
import java.sql.Connection;
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 Dao_ProdutoImp implements Dao_Produto {

    private Connection conexao;

    public Dao_ProdutoImp() {
        try {
            this.conexao = Fabrica_Conexao.conexao();//classe statica que contem metodo,para conectar com o banco
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage(), "Oriom", JOptionPane.ERROR_MESSAGE);
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage(), "Oriom", JOptionPane.ERROR_MESSAGE);
        }
    }

    public void cadastraProduto(Produto_Bean produto) throws Exception {

        Connection conex = null;
        PreparedStatement pst = null;

        if (produto == null) {
            throw new Exception("Valor não pode ser nulo");
        }

        String query = "INSERT INTO produtos(produto,embalagem) VALUES(?,?)";

        try {
            conex = this.conexao;
            pst = conex.prepareStatement(query);
            pst.setString(1, produto.getDescricao_Produto());
            pst.setString(2, produto.getEmbalagem_Produto());
            pst.executeUpdate();
            JOptionPane.showMessageDialog(null, "Cadastro efetuado", "Oriom", JOptionPane.INFORMATION_MESSAGE);
        }catch(SQLException sql){
             JOptionPane.showMessageDialog(null,sql.getMessage(), "Oriom", JOptionPane.ERROR_MESSAGE);
        }
        finally {
            Fabrica_Conexao.close(conex, pst, null);
        }
    }

    public List listaProdutoID(Produto_Bean produto) throws Exception {
        Connection conex = null;
        PreparedStatement pst = null;
        ResultSet rst = null;

        if (produto == null) {
            throw new Exception("Valor não pode ser nulo");
        }

        String query = "SELECT * FROM produtos WHERE id_produto=?";
        conex = this.conexao;
        List<Produto_Bean> lista = new ArrayList<Produto_Bean>();
        try {
            pst = conex.prepareStatement(query);
            pst.setInt(1, produto.getId_Produto());
            rst = pst.executeQuery();

            while (rst.next()) {
                int codigo = rst.getInt(1);
                String descricao = rst.getString(2);
                String embalagem = rst.getString(3);
                lista.add(new Produto_Bean(codigo, descricao, embalagem));
            }
            return lista;
        } finally {
            Fabrica_Conexao.close(conex, pst,rst);
        }

    }

    public List listaProdutoDesc(Produto_Bean produto) throws Exception {

        //metodo retorna uma lista de valores obtidos pela query
        Connection conex = null;
        PreparedStatement pst = null;
        ResultSet rst = null;

        if (produto == null) {
            throw new Exception("Valor não pode ser nulo");
        }
        try {
        //a pessoa tem que colocar o % antes do valor
        String query = "SELECT * FROM produtos WHERE produto like ?";
        conex = this.conexao;
        List<Produto_Bean> lista = new ArrayList<Produto_Bean>();
        
            pst = conex.prepareStatement(query);
            pst.setString(1, produto.getDescricao_Produto());
            rst = pst.executeQuery();

            while (rst.next()) {
                int codigo = rst.getInt(1);
                String descricao = rst.getString(2);
                String embalagem = rst.getString(3);
                lista.add(new Produto_Bean(codigo, descricao, embalagem));
            }
            return lista;
        }
        finally {
            Fabrica_Conexao.close(conex, pst,rst);
        }

    }

    public void AtualizaProduto(Produto_Bean produto) throws Exception {
        Connection conex = null;
        PreparedStatement pst = null;
      

        if (produto == null) {
            throw new Exception("Valor não pode ser nulo");
        }
        try {
            conex = this.conexao;
            String query = "UPDATE produtos SET produto=?,embalagem=? WHERE id_produto=?";
            pst = conex.prepareStatement(query);
            pst.setString(1, produto.getDescricao_Produto());
            pst.setString(2, produto.getEmbalagem_Produto());
            pst.setInt(3, produto.getId_Produto());
            pst.executeUpdate();

            JOptionPane.showMessageDialog(null, "Registro atualizado com sucesso", "Oriom", JOptionPane.INFORMATION_MESSAGE);
            
            
        }catch(SQLException sql){
             JOptionPane.showMessageDialog(null,sql.getMessage(), "Oriom", JOptionPane.ERROR_MESSAGE);
        }
        finally {
            Fabrica_Conexao.close(conex, pst, null);
        }
    }

    public void deleteProduto(Produto_Bean produto) throws Exception {
        Connection conex = null;
        PreparedStatement pst = null;
      

        if (produto == null) {
            throw new Exception("Valor não pode ser nulo");
        }

        String query = "DELETE FROM produtos WHERE id_produto=?";
        try {
            conex = this.conexao;
            pst = conex.prepareStatement(query);
            pst.setInt(1, produto.getId_Produto());
           

            pst.executeUpdate();
            JOptionPane.showMessageDialog(null, "Deletado com sucesso", "Oriom", JOptionPane.INFORMATION_MESSAGE);
            
            
        }catch(SQLException sql){
             JOptionPane.showMessageDialog(null,sql.getMessage(), "Oriom", JOptionPane.ERROR_MESSAGE);
        }
        finally {
            Fabrica_Conexao.close(conex, pst,null);
        }
    }

    public List listaProdutos() throws SQLException {
        //metodo retorna uma lista

        String query = "SELECT * FROM produtos";
        Connection conex = this.conexao;
        PreparedStatement pst = null;
        ResultSet rst = null;

        try {
            pst = conex.prepareStatement(query);
            rst = pst.executeQuery();
            List<Produto_Bean> lista = new ArrayList<Produto_Bean>();
            // crio a lista para receber registros do bean Produtos_Bean

            while (rst.next()) {
                int codigo = rst.getInt(1);
                String descricao = rst.getString(2);
                String embalagem = rst.getString(3);
                lista.add(new Produto_Bean(codigo, descricao, embalagem));
            }
            return lista;

        } finally {
            Fabrica_Conexao.close(conex, pst, rst);
        }
    }
}

5 Respostas

emmanuelrock

Antes de deletar ou atualizar você deve fazer uma busca pelo item, se este não existir você exibe uma mensagem e nem chama os métodos de atualização/deleção.

R

Blz cara,mas tem algum metodo que eu possa saber quantas linhas foram retornadas ou afetadas pela query?

emmanuelrock

Creio que aí você precisará criar códigos no SGBD, como uma function que retornará o número de linhas afetadas…

T

executeUpdate retorna o número de linhas afetadas (por exemplo, se foram deletadas 10 linhas, ele retorna 10.

R

Obrigado senhores,pela força.

Criado 17 de agosto de 2009
Ultima resposta 17 de ago. de 2009
Respostas 5
Participantes 3