Não cadastrando no banco de dados

Estou fazendo um sistema como sou iniciante, estou começando por partes estou na tela de cadastro de PRODUTOS

Banco de dados: Access
Usando o NetBeans Ultima versão

As variavel do bando estão assim:

CODIGO:numero
GRUPO:texto
PRODUTO:texto
ESTOQUE: numero
CUSTO: numero
VENDA: numero
DATACOMPRA: texto
VALIDADE: texto

Na hora de cadastrar aparece este erro:

Conectado!
General error
Problemas na operação, verifique se você digitou os campos corretamente!
Conexão Fechada

estou usando classe DAO

o codigo onde estão os set e get:

package model;

public class Produto {
   private int codigo;
   private String grupo;
   private String produto;
   private String datacompra;
   private int estoque;
   private float custo;
   private float venda;
   private String validade;
   public void setCodigo(int codigo) {
      this.codigo = codigo;
   }
   public void setGrupo(String grupo) {
      this.grupo = grupo;
   }
   public void setProduto(String produto) {
      this.produto = produto;
   }
   public void setDataCompra(String datacompra) {
      this.datacompra = datacompra;
   }
   public void setEstoque(int estoque) {
      this.estoque = estoque;
   }
   public void setCusto(float custo) {
      this.custo = custo;
   }
   public void setVenda(float venda) {
      this.venda = venda;
   }
   public void setValidade(String validade) {
      this.validade = validade;
   }

   public int getCodigo() {
      return this.codigo;
   }
   public String getGrupo() {
      return this.grupo;
   }
   public String getProduto() {
      return this.produto;
   }
   public int getEstoque() {
      return this.estoque;
   }
   public double getCusto() {
      return this.custo;
   }
   public double getVenda() {
      return this.venda;
   }
   public String getDataCompra() {
      return this.datacompra;
   }
   public String getValidade() {
      return this.validade;
   }
}

o codigo para inserir é este:

public void insere(Produto produto){
      conectar();
      try {
         comando.executeUpdate("INSERT INTO Produto VALUES('"
               + produto.getCodigo() + "','"
               + produto.getGrupo() + "','"
               + produto.getProduto() + "','"
               + produto.getEstoque() + "','"
               + produto.getCusto() + "','"
               + produto.getVenda() + "','"
               + produto.getDataCompra() + "','"
               + produto.getValidade() + "')");
        JOptionPane.showMessageDialog(null,"Operação realizada com sucesso!");
      } catch (SQLException e) {
         imprimeErro("Problemas na operação, verifique se você digitou os campos corretamente!", e.getMessage());
      } finally {
         fechar();
    }
 }

Na interface o codigo do botão gravar é este:

private void btGravarActionPerformed(java.awt.event.ActionEvent evt) {                                         

        if(evt.getSource()==btGravar){
         produto.setCodigo(tfCodigo.getX());
         produto.setGrupo(tfGrupo.getText());
         produto.setProduto(tfProduto.getText());
         produto.setEstoque(tfEstoque.getX());
         produto.setCusto(tfCusto.getAlignmentX());
         produto.setVenda(tfVenda.getAlignmentX());
         produto.setDataCompra(tfCompra.getText());
         produto.setValidade(tfValidade.getText());
         daoProduto.insere(produto);
         LimparCampos();
         setBotoes(true,false,false,false,true,false,true);
         setCampos(true,false,false,false,false,false,false,false);
       }
    }                            

Sendo que eu digito os campos assim:

Codigo: 001 ; Grupo: Alimento ; Produto: Arroz ; Estoque: 50 ; Data da Compra: 13/08/2011 ; Data da validade: 13/02/2012 ; Preço de custo: 12 ; Preço de venda: 18

Gostaria de saber onde esta o erro

fico no aguardo obrigado pessoal

Primeira coisa é não usar Access(ecaa). Mesmo q seja como esta dizendo, esta aprendendo !!!

Se quer usar um banco de dados embedded, use HSQLDB, Derby, H2 etc…Ou opte por MySQL, PostgresSQL etc…Access num compensa.

Para valores R$ use BigDecimal e nao Double ou Float.

o DAO funciona assim.

//classe de conexao, fabrica de conexao
public class ConexaoMySQL{
    public static Connection getConnection() throws SQLException{
        try {            
            Class.forName("com.mysql.jdbc.Driver");             
            return DriverManager.getConnection("jdbc:mysql://localhost/bancoDados?user=user&password=senha");                         
        } catch (ClassNotFoundException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());            
            throw new SQLException();            
        }        
    } 
    
}



//Classe de Persistencia DAO
public class ProdutosDAO{
        private Connection con;
 
        public ProdutosDAO(){
               this.con = ConexaoMySQL.getConnection(); //aqui pego a conexao da factory, veja q nao preciso conectar e desconectar
        }

      public void insere(Produto p){
            PreparedStatement stm = this.con.prepareStatement("INSERT INTO produtos (descricao, valorUnitario) VALUES (?,?)");
            stm.setString(1, p.getDescricao());
            stm.setBigDecimal(2, p.getValorUnitario());
            stm.executeUpdate();
            stm.close();
      }
}

Estude a apostila FJ21 da Caelum, vc consegue baixar no Google.

t+ e boa sorte.

Mas pelo menos eu gostaria de saber onde esta este erro please!

Você falou do tipo de banco, como e classe DAO, mas não o erro

[quote=alucardmaas]Mas pelo menos eu gostaria de saber onde esta este erro please!

Você falou do tipo de banco, como e classe DAO, mas não o erro[/quote]

Sao varios os erros,

1 - Warning: Nao concatene Strings SQL, use PreparedStatement como mostrei.
2 - Question: Pq usa evt.getSource() == btnGravar ?? …vc usa um botao so pra fazer insert/update/delete ???
3 - Question: setBotoes ??? pra q serve ?
4 - Question: setCampos ??? pra q serve ?
5 - Error: Onde esta o Statement do executeUpdate ???
6 - Warning: Vc usa conectar logo no inicio da assinatura do metodo insere(), para cada metodo vc fara isso ? Se for isso nao se faz.
7 - Information: Aparentemente, a olho nu como estou aqui, somente seu POJO(Bean) esta correto, apesar de estar faltando o Construtor vazio.

entre no site: www.iguanasistemas.com.br, baixe o programa e veja como eu fiz.

t+ e boa sorte.

Eu usei como exemplo para criar a classe DAO deste link:

http://javafree.uol.com.br/artigo/874102/Aplicativo-Java-com-acesso-a-banco-de-dados-1º-parte-Dao.html

OBS: gostaria de saber se posso usar este exemplo ou se vc recomenda um para mim.

Agora no codigo:

os metodos setbotoes e o outro metodo sao para limpar os campos.

mas me da um exemplo sobre DAO ou um site no qual posso me basear

[quote=alucardmaas]Eu usei como exemplo para criar a classe DAO deste link:

http://javafree.uol.com.br/artigo/874102/Aplicativo-Java-com-acesso-a-banco-de-dados-1º-parte-Dao.html

OBS: gostaria de saber se posso usar este exemplo ou se vc recomenda um para mim.

Agora no codigo:

os metodos setbotoes e o outro metodo sao para limpar os campos.

mas me da um exemplo sobre DAO ou um site no qual posso me basear

[/quote]

Pelo visto vc ta bem perdido com DAO, de uma estudada na apostila FJ21 da Caelum como falei no primeiro post. DAO é bem básico, não tem segredo.
O exemplo do primeiro post q mandei é mais q suficiente pra entender como funciona, faltando apenas o POJO q vc criou, adapte-o conforme sua necessidade.

Para controlar seus componentes, evite ficar criando esses metodos de limpar/desabilitar/habilitar dentro do seu Form. Crie uma Classe de configuracao pra isso, com os metodos q precisa pra desabilitar/habilitar seus controles. Isso vai deixar seu código mais limpo e melhor reutilizavel para todas as suas classes.

aqui como costumo fazer para controlar meus campos/botoes etc.

public class BlockUnblockClearFields {
    private Component[] c;
    
    public BlockUnblockClearFields(JPanel panel){
        c = panel.getComponents();
    }

    public void blockButtons(){
        /**
         * Bloqueia todos os Botoes
         */
        for(Component cp : c){
            if(cp instanceof JButton){
                cp.setEnabled(false);                
            }           
        }         
    }
    
    public void block(){
        /**
         * Bloqueia todos os Campos de Edição
         */
        for(Component cp : c){
            if(cp instanceof JTextField || cp instanceof JComboBox || cp instanceof JDateChooser || cp instanceof JCheckBox || cp instanceof JTextArea || cp instanceof JEditorPane){
                cp.setEnabled(false);                
            }           
        }
    }
    
    public void unBlock(){
        /**
         * Desbloqueia todos os Campos de Edição
         */
        for(Component cp : c){
            if(cp instanceof JTextField || cp instanceof JComboBox || cp instanceof JDateChooser || cp instanceof JCheckBox || cp instanceof JTextArea || cp instanceof JEditorPane){
                cp.setEnabled(true);
            }
        }
    }
    
    public void clearAll(){
        /**
         * Limpa todos os valores dos Campos de Edição
         */
        for(Component cp : c){
            //|| cp instanceof JDateChooser || cp instanceof JCheckBox || cp instanceof JTextArea || cp instanceof JEditorPane
            if(cp instanceof JTextField){
                JTextField txtField = (JTextField)cp;
                txtField.setText("");              
            }else if(cp instanceof JDateChooser){
                JDateChooser dateChooser = (JDateChooser)cp;
                JTextField txtFieldDate = (JTextField)dateChooser.getDateEditor().getUiComponent();
                txtFieldDate.setText("");
            }else if(cp instanceof JCheckBox){
                JCheckBox checkBox = (JCheckBox)cp;
                checkBox.setSelected(false);
            }else if(cp instanceof JTextArea){
                JTextArea txtArea = (JTextArea)cp;
                txtArea.setText("");
            }else if(cp instanceof JEditorPane){                 
                JEditorPane txtEditorPane = (JEditorPane)cp;
                txtEditorPane.setText("");
            }
        }
    }
}

Assim eu tendo essa classe, apenas passo os JPanel onde estao meus componentes para fazer o que preciso.

t+ e boa sorte.

A respeito do link q vc me mandou, eu nao comento por ética. Mas eu nao usaria a técnica.

t+ e boa sorte.

Gostaria de Saber o link para download pois só acho megaupload, o mesmo encontra-se fora do ar

Google é seu amigo.

veja: http://www.caelum.com.br/download/caelum-java-web-fj21.pdf

aqui tbm: http://www.caelum.com.br/apostilas/

a FJ11 tbm é muito boa pra vc ler, é o começo de tudo.

t+ e boa sorte.

obrigado e ate +