Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 519209
            [titulo] => Pesquisa com JTextField vazio
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-05-08 11:00:25
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 333872
            [status] => A
            [isExample] => 
            [NomeUsuario] => Aldair Natan Bezerra do Nascimento Gomes
            [Apelido] => Aldair Natan
            [Foto] => 333872_20160622095739.JPG
            [Conteudo] => Olá Ricardo,
se eu entendi bem, vc tem que fazer uma pesquisa apenas pelo nome do produto certo?
se for isso Use Like.

é uma pesquisa que vai te trazer uma lista?como é? não ficou bem especificado.
att. ) )

Pesquisa com JTextField vazio

Caldeira
|
MVP
    07 mai 2015

Boa noite pessoal, tenho uma tela em JAVA e o professor me mandou implementar uma tela de pesquisa, onde o usuário pode digitar o código e o sistema tem que trazer todas as informações daquele produtos. Até ai tudo bem, o problema e que o usuário pode não digitar o codigo, ele pode digitar a descrição e deixar o código do produto em branco.
Como devo tratar minha view nessa situação?
Pensei em mandar todos os campos para a persistência, porém não aceita campo em branco. Como posso fazer?
Fiz o código abaixo, porém quando o usuário deixa qualquer campo em branco, da erro na parte do comando que está em branco, como por exemplo p.setAplicacao(txtAplicacao.getText());
#Código

p.setIdProdutos(Integer.valueOf(txtCodigoProduto.getText()));
				p.setCodigoBarras(Long.valueOf(txtCodigoBarras.getText()));
				p.setAplicacao(txtAplicacao.getText());
				p.setDescricao(txtDescricao.getText());
				p.setMedida(txtMedida.getText());
				p.setValorVenda(Double.valueOf(fmtValorVenda.getText()));
				p.setValorCusto(Double.valueOf(fmtValorCusto.getText()));
				p.setQuantidade(Double.valueOf(txtQuantidade.getText()));
				
				dao.select(p);
				
				txtCodigoProduto.setText(String.valueOf(p.getIdProdutos()));
				txtCodigoBarras.setText(String.valueOf(p.getCodigoBarras()));
				txtAplicacao.setText(p.getAplicacao());
				txtDescricao.setText(p.getDescricao());
				txtMedida.setText(p.getMedida());
				fmtValorVenda.setText(String.valueOf(p.getValorVenda()));
				fmtValorCusto.setText(String.valueOf(p.getValorCusto()));

DAO
#Código
		try {
			ResultSet rs;
			conecta.conexao();
			PreparedStatement pst = conecta.conn
					.prepareStatement("select * from produtos where idProdutos = %?% or codigoBarras = %?% or descricao = %?% or "
							+ "aplicacao = %?% or medida = %?% or valorVenda = %?% or valorCusto = %?% or quantidade = %?%");
			rs = pst.executeQuery();
			p.setIdProdutos(rs.getInt("idProdutos"));
			p.setCodigoBarras(rs.getLong("codigoBarras"));
			p.setDescricao(rs.getString("descricao"));
			p.setAplicacao(rs.getString("aplicacao"));
			p.setMedida(rs.getString("medida"));
			p.setValorVenda(rs.getDouble("valorVenda"));
			p.setValorCusto(rs.getDouble("valorCusto"));
			p.setQuantidade(rs.getDouble("quantidade"));
			
			// JOptionPane.showMessageDialog(null, "Salvo com sucesso");
		} catch (SQLException e1) {
			JOptionPane.showMessageDialog(null, "Erro na pesquisa \n Erro "
					+ e1.getMessage());
		}
	}

Post mais votado

Aldair Natan
   - 08 mai 2015

Olá Ricardo,
se eu entendi bem, vc tem que fazer uma pesquisa apenas pelo nome do produto certo?
se for isso Use Like.

é uma pesquisa que vai te trazer uma lista?como é? não ficou bem especificado.
att.

Caldeira
|
MVP
    07 mai 2015

Esqueci de mostrar a classe Produtos, na qual faço referencia em ambas as classes citadas a cima

#Código

public class Produtos {
	//declaração de variaves
	private int idProdutos;
	private long codigoBarras;
	private String descricao;
	private String aplicacao;
	private String medida;
	private String lote;
	private double valorVenda;
	private double valorCusto;
	private double quantidade;
	
	//método construtor
	public Produtos(){
		
	}
	
	/*//Método construtor aprimorado
	public Produtos(int idProdutos,int codigoBarras,String descricao,String aplicacao,String medida,Boolean ativo, String dataValidade,  String dataFabricacao,String lote) throws ParseException {
		SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyy");
		
		this.idProdutos = idProdutos;
		this.codigoBarras = codigoBarras;
		this.descricao = descricao;
		this.aplicacao = aplicacao;
		this.medida =medida;
		this.ativo = ativo;
		this.dataValidade = df.parse(dataValidade);
		this.dataFabricacao = df.parse(dataFabricacao);
		this.lote = lote;	
	}*/


// inicio dos getters
	public int getIdProdutos() {
		return idProdutos;
	}
	public long getCodigoBarras() {
		return codigoBarras;
	}

	public String getDescricao() {
		return descricao;
	}

	public String getAplicacao() {
		return aplicacao;
	}

	public String getMedida() {
		return medida;
	}

	public String getLote() {
		return lote;
	}
	
	public double getValorVenda(){
		
		return valorVenda;
	}
	
	public double getValorCusto(){
		
		return valorCusto;
		
	}
	
	public double getQuantidade(){
		
		return quantidade;
	}
	

	// inicio dos setters 
	
	public void setIdProdutos(int idProdutos) {
		this.idProdutos = idProdutos;
	}
	
	public void setCodigoBarras(long codigoBarras) {
		
		this.codigoBarras = codigoBarras;
		
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public void setAplicacao(String aplicacao) {
		this.aplicacao = aplicacao;
	}
	public void setMedida(String medida) {
		this.medida = medida;
	}
	
	public void setLote(String lote) {
		this.lote = lote;
	}
	
	
	public void setValorVenda(double valorVenda){
		
		this.valorVenda = valorVenda;
		
	}
	
	public void setValorCusto(double valorCusto){
		
		this.valorCusto = valorCusto;
		
	}
	
	public void setQuantidade(double quantidade){
		
		this.quantidade = quantidade;
		
	}
	
	

}

Caldeira
|
MVP
    08 mai 2015

A pesquisa não e apenas pelo nome do produto, os campos utilizados serão informados pelo usuário. Por exemplo, se o usuário quiser pesquisar pelo codigo, o sistema traz todas as informações. Se ele decidir pesquisar pela descrição, da mesma maneira o sistema tem que trazer todas as informações do produto...

A minha dúvida encontra-se no momento que essa pesquisa acontece, quando o usuário coloca o numero do produto (código), o sistema da erro informando que tem campo vazio e não pode prosseguir. Clicando no erro, ele direciona para o próximo campo que não estava preenchido. Se escolher pesquisar pela descrição, o erro acontece no código do produto (1º campo da pesquisa)

Poderia me dar um exemplo de pesquisa usando o LIKE???

Obrigado

Aldair Natan
   - 08 mai 2015

Certo,

1º Atributos de tipos numéricos não aceitam valores NULL, mas aceitam 0 (zero), pode ser este o motivo.

2º seu select está estranho, como vc substitui estas interrogações?
use o pst.setString(1,valor);

sendo "setString" o tipo do valor no banco, o parametro 1 é a posição da interrogação em sequencia, e o segundo é o valor pelo qual vai substituir.

#Código

try {
        ResultSet rs;
        conecta.conexao();
        PreparedStatement pst = conecta.conn
                .prepareStatement("select * from produtos where idProdutos = %?% or codigoBarras = %?% or descricao = %?% or "
                        + "aplicacao = %?% or medida = %?% or valorVenda = %?% or valorCusto = %?% or quantidade = %?%");
        rs = pst.executeQuery();
        p.setIdProdutos(rs.getInt("idProdutos"));
        p.setCodigoBarras(rs.getLong("codigoBarras"));
        p.setDescricao(rs.getString("descricao"));
        p.setAplicacao(rs.getString("aplicacao"));
        p.setMedida(rs.getString("medida"));
        p.setValorVenda(rs.getDouble("valorVenda"));
        p.setValorCusto(rs.getDouble("valorCusto"));
        p.setQuantidade(rs.getDouble("quantidade"));
         
        // JOptionPane.showMessageDialog(null, "Salvo com sucesso");
    } catch (SQLException e1) {
        JOptionPane.showMessageDialog(null, "Erro na pesquisa \n Erro "
                + e1.getMessage());
    }

Caldeira
|
MVP
    08 mai 2015

Eu entendi o que você disse. Vou testar e já falo aqui.

Obrigado

Caldeira
|
MVP
    08 mai 2015

Eu entendi o que você disse. Vou testar e já falo aqui.

Obrigado

Aldair Natan
   - 08 mai 2015

Ok, Fico no aguardo meu amigo.

Caldeira
|
MVP
    09 mai 2015

Eu tentei aqui, más apareceu a seguinte mensagem

before start of result set

O que devo estar fazendo de errado?

Aldair Natan
   - 09 mai 2015

Manda o código...
mas provavelmente, deve ser a Instancia do ResultSet,
Faça a isntancia od Result set depois de substituir os valores das interrogações.

Caldeira
|
MVP
    09 mai 2015

Era isso mesmo. Deu certinho. Obrigado

Aldair Natan
   - 09 mai 2015

Opa, que bom que pude ajudar... :D
abraço.