validação

4 respostas
F

E aí galera tranqüilo. Eu to com um probleminha de validação de campos, a questão é a seguinte na tela de cadastro de produto eu tenho o campo nome do produto e campo descrição do produto, aí quando o usuário informa os dados e clicar no botão cadastrar se o nome e á descrição já estiverem sido cadastrados anteriormente no banco o programa mostraria uma mensagem informando que o nome ou a descrição já existem. Acontece o seguinte o programa mostra a mensagem mais só quando ambos os campos nome é descrição são iguais e fazem parte da mesma linha da tabela, se os campos já estiverem sido cadastrados mais se tiverem em linhas diferentes o programa estar cadastrando do mesmo jeito. Então é isso galera se der pra vocês me ajudarem desde já agradeço.

4 Respostas

adriano.ferranti

Olá, vc deve substituir o comando

PreparedStatement stmt = this.connection.prepareStatement("SELECT nome,descricao FROM Produto WHERE nome= ? and descricao=?");

por

PreparedStatement stmt = this.connection.prepareStatement("SELECT nome,descricao FROM Produto WHERE nome= ? or descricao=?");
F

É aí Adriano obrigado pela ajuda, mais ainda não deu certo.

adriano.ferranti

E aí Foguinho beleza?
Vamos tentar resolver isso aí, cara
Seguinte: a tua primeira instrução

PreparedStatement stmt = this.connection.prepareStatement("SELECT nome,descricao FROM Produto WHERE nome= ? and descricao=?");

só retornava o registro se fossem iguais o nome E a descrição. Portanto alterando a instrução para usar OR no lugar de AND, a instrução SQL retorna um registro se for igual o nome OU a descriçao. OK?

Segunda parte, após executar a instrução vc compara o valor retornado pela consulta SQL com as propriedades dos objetos usando equals, o que pode estar acontecendo é que, como equals é caso sensitivo, logo “Produto” vai ser diferente de “produto”. Para resolver isso vc pode usar equalsIgnoreCase no lugar de equal. Experimente debugar pra ver o valor das variáveis e o retorno da consulta SQL e posta aí pra nós podermos te ajudar.
Falow

F

Fala Adriano beleza, rapaz eu to quebrando a minha cabeça aqui há uns três dias com esse problema. A questão é a seguinte ele tá retornando a validação quando o nome é a descrição são iguais, ou quando o nome é igual e a descrição não é, e assim sucessivamento, mais quando o nome e a descrição são diferentes ele mostra uma tela de JOptionPane sem nenhuma mensagem é não grava os dados no banco. Então Adriano eu vou colocar o código das classes e se der pra tu tentar resolver o problema eu fico muito agradecido.

classe Poduto

/*
 * Created on 30/05/2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author master
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Produto {
	
	private int codigo;
	private String nome;
	private String descricao;
	/**
	 * 
	 */
	public Produto() {
	}
	/**
	 * @return Returns the codigo.
	 */
	public int getCodigo() {
		return codigo;
	}
	/**
	 * @param codigo The codigo to set.
	 */
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	/**
	 * @return Returns the descricao.
	 */
	public String getDescricao() {
		return descricao;
	}
	/**
	 * @param descricao The descricao to set.
	 */
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	/**
	 * @return Returns the nome.
	 */
	public String getNome() {
		return nome;
	}
	/**
	 * @param nome The nome to set.
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}
}

classe ControleDeConexoes

/*
 * Created on 30/05/2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 * @author master
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class ControleDeConexoes {
	//private ControleDeConexoes conexao;
	
	public static final String DRIVER="com.mysql.jdbc.Driver";
	public static final String URL="jdbc:mysql://localhost:3306/test";
	private final static String USUARIO = "root";
	private final static String SENHA = "root";
	
	public static Connection createConnection()throws SQLException {
	    // Use DRIVER and DBURL to create a connection
	    // Recommend connection pool implementation/usage
	  	try 
		{
    		Class.forName(DRIVER);
    		return (Connection) DriverManager.getConnection(URL,USUARIO,SENHA);
		}catch(ClassNotFoundException e) 
		{
			throw new SQLException(e.getMessage());
		}
	}
}

classe ProdutoDAO

/*
 * Created on 30/05/2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import javax.swing.JOptionPane;
/**
 * @author master
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class ProdutoDAO {
	private Connection connection;


	public ProdutoDAO() throws SQLException {
	    // initialization 
		this.connection = ControleDeConexoes.createConnection();
	 }
	
	public void adiciona(Produto produto)throws SQLException{
			
		    PreparedStatement stmt = this.connection.prepareStatement("INSERT INTO produto (nome,descricao) values (?,?)");

 	 		// seta os valores
 	 		stmt.setString(1,produto.getNome());
 	 		stmt.setString(2,produto.getDescricao());
 	 		
 	 		// executa
 	 		stmt.execute();
 	 		
 	 		JOptionPane.showMessageDialog(null,"Operação concluída com sucesso");
 	 		//stmt.close();
 	 		
 	 		
 			stmt.close();
	 		
	 	//}
	 				
 	}
 	
 	public void update(Produto produto)throws SQLException{
 		
 		// prepared statement para inserção
 		PreparedStatement stmt = this.connection.prepareStatement("UPDATE Produto SET Nome=?, WHERE codigo=?");

 		// seta os valores
 		stmt.setString(1,produto.getNome());
 		stmt.setString(2,produto.getDescricao());
 		stmt.setInt(4,produto.getCodigo());
 		
 		// executa
 		stmt.executeUpdate();
 		
 		stmt.close();
 		
 	}
	public boolean consultarNome(String nome1,String nome2)throws SQLException{
	
		boolean result=true;
		PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM Produto WHERE nome= ? or descricao=?");

		stmt.setString(1,nome1);
		stmt.setString(2,nome2);
		
		ResultSet rs = stmt.executeQuery();
		String name = null;
		String desc = null;
		
 		 while(rs.next())
 		 {
 		 	// criando o objeto Contato
 		 	name=(rs.getString("nome"));
 		 	desc=(rs.getString("descricao"));
 		 
 		 }
 		
 		
 		 
 		if((name.equals(nome1))&&(desc.equals(nome2))){
 			
 			JOptionPane.showMessageDialog(null,"O nome é a  descrição já existe");
 			result= true;
 		}
 		
 		else if((!name.equals(nome1))&&(desc.equals(nome2))){
 			
 			JOptionPane.showMessageDialog(null,"A descrição já existe");
 			result= true;
 		}
 		 
 		else if((name.equals(nome1))&&(!desc.equals(nome2))){
	 			
	 			JOptionPane.showMessageDialog(null,"O nome já existe");
	 		    result= true;
	 	}
	 	
	 	
	 	
 			
 		rs.close();
 	 	stmt.close();
 	 	
		return result;
 		 	
	}
 	public Collection consultarPeloCodigo(int codigo)throws SQLException{
 		
		PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM Produto WHERE codigo= ?");
		
		stmt.setInt(1,codigo);
		
		ResultSet rs = stmt.executeQuery();
		
	
 		Collection list = new ArrayList();
 		
 		 while (rs.next())
 		 {
 		 	// criando o objeto Contato
 		 	Produto produto = new Produto();
 		 	produto.setCodigo(rs.getInt(""));
 		 	produto.setNome(rs.getString(""));
 		 	produto.setDescricao(rs.getString(""));
 		 	
 		 	// adicionando o objeto à lista
 		 	list.add(produto);
 		 	
 		 }
 		
 		 	rs.close();
 		 	stmt.close();
 		
 		 	return list;
	}
	
 	public Collection consultarTodos()throws SQLException{
 		
 		PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM Produto");
 		ResultSet rs = stmt.executeQuery();
 		
 		Collection list = new ArrayList();
 		
 		 while (rs.next()) {
 		 	// criando o objeto Contato
 		 	Produto produto = new Produto();
 		 	produto.setCodigo(rs.getInt(""));
 		 	produto.setNome(rs.getString(""));
 		 	produto.setDescricao(rs.getString(""));
 		 	
 		
 		 	// adicionando o objeto à lista
 		 	list.add(produto);
 		 }
 		
 		 rs.close();
 		 stmt.close();
 		
 		 return list;
 	}

}

classe FormCadastrarProd

/*
 * Created on 30/05/2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
 * @author master
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class FormCadastrarProd extends JFrame{

	  /** Creates new form FormCadastrarProd */
    public FormCadastrarProd() {
        initComponents();
         setBounds(0,0,400,300);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        labMensagem = new javax.swing.JLabel();
        labNome = new javax.swing.JLabel();
        labDescricao = new javax.swing.JLabel();
        textNome = new javax.swing.JTextField();
        textDescricao = new javax.swing.JTextField();
        btnCadastrar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();

        getContentPane().setLayout(null);

        setTitle("Cadastra Produto\n");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jPanel1.setLayout(null);

        jPanel1.setMinimumSize(new java.awt.Dimension(400, 300));
        labMensagem.setFont(new java.awt.Font("MS Sans Serif", 0, 20));
        labMensagem.setText("Digite os dados do produto");
        jPanel1.add(labMensagem);
        labMensagem.setBounds(60, 40, 250, 24);

        labNome.setFont(new java.awt.Font("MS Sans Serif", 1, 12));
        labNome.setText("Nome do Produto:");
        jPanel1.add(labNome);
        labNome.setBounds(10, 100, 130, 16);

        labDescricao.setFont(new java.awt.Font("MS Sans Serif", 1, 12));
        labDescricao.setText("Descri\u00e7\u00e3o do Produto:");
        jPanel1.add(labDescricao);
        labDescricao.setBounds(10, 140, 140, 16);

        jPanel1.add(textNome);
        textNome.setBounds(150, 100, 210, 20);

        jPanel1.add(textDescricao);
        textDescricao.setBounds(150, 140, 210, 20);

        btnCadastrar.setFont(new java.awt.Font("MS Sans Serif", 1, 11));
        btnCadastrar.setText("Cadastrar");
        btnCadastrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCadastrarActionPerformed(evt);
            }
        });

        jPanel1.add(btnCadastrar);
        btnCadastrar.setBounds(70, 220, 100, 23);

        btnCancelar.setFont(new java.awt.Font("MS Sans Serif", 1, 11));
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        jPanel1.add(btnCancelar);
        btnCancelar.setBounds(230, 220, 100, 23);

        getContentPane().add(jPanel1);
        jPanel1.setBounds(0, 0, 400, 280);

        pack();
    }

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
        dispose();
    }

    private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
       try
		{	
		
       		Produto p = new Produto();
       		p.setNome(textNome.getText());
       		p.setDescricao(textDescricao.getText());
       		ProdutoDAO dao= new ProdutoDAO();
       	if(dao.consultarNome(textNome.getText(),textDescricao.getText())==false){
       		
       		dao.adiciona(p);
       		
       	}
       	
    	
    	
		}
		catch(Exception sqle) 
		{
			JOptionPane.showMessageDialog(null,sqle.getMessage());	
		}
		
    }
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        dispose();
    }
    
    
    public Produto preecheValoresDeProduto(Produto produto)
	{
		
			produto = new Produto();
			
			produto.setNome(textNome.getText());
			
			produto.setDescricao(textDescricao.getText());
			
			return produto;		
	}
	public static void main(String[] args) {
		   FormCadastrarProd fcp = new FormCadastrarProd();
	        fcp.setVisible(true);
	}
	    
	    // Variables declaration - do not modify
	    private javax.swing.JButton btnCadastrar;
	    private javax.swing.JButton btnCancelar;
	    private javax.swing.JPanel jPanel1;
	    private javax.swing.JLabel labDescricao;
	    private javax.swing.JLabel labMensagem;
	    private javax.swing.JLabel labNome;
	    private javax.swing.JTextField textDescricao;
	    private javax.swing.JTextField textNome;
	    // End of variables declaration

}
Criado 28 de maio de 2006
Ultima resposta 30 de mai. de 2006
Respostas 4
Participantes 2