Ajuda com sintaxe MySql

Repetindo…

[quote=ViniGodoy]Para poder usar o getGeneratedKeys, crie o preparedStatement assim:

ViniGodooy,

alterei conforme vc flw e rodei, e ele deu o seguinte erro na linha 54 : Column Index out of range, 0 < 1.

Na linha 47, eu não tenho q alterar para a seguinte maneira??

“stmt.executeUpdate(sql);”

Fiz isso, alterei inserindo o “sql” no “executeUpdate()” e ele deu o seguinte erro: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)’ at line 1


     try {

             String sql = "INSERT INTO "
             + "fornecedor(cnpj, data, razao_social, nome_fantasia, insc_estadual,"
             + "endereco, complemento, numero, bairro, cep,"
             + "id_pais, id_uf, id_municipio, telefone, celular,"
             + "fax, contato, nro_banco, nro_agencia, conta_corrente,"
             + " email, site, ativo, cpf, rg, nome) "
             + "VALUES (?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?, ?)";


       PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

      stmt.setString(1, f.getCNPJ());
      stmt.setString(2, f.getData());
      stmt.setString(3, f.getRazaoSocial());
      stmt.setString(4, f.getNomeFantasia());
      stmt.setString(5, f.getInscEstadual());
      stmt.setString(6, f.getEndereco());
      stmt.setString(7, f.getComplemento());
      stmt.setString(8, f.getNumero());
      stmt.setString(9, f.getBairro());
      stmt.setString(10, f.getCEP());
      stmt.setString(11, f.getIdPais());
      stmt.setInt(12, f.getIdUF());
      stmt.setInt(13, f.getIdMunicipio());
      stmt.setString(14, f.getTelefone());
      stmt.setString(15, f.getCelular());
      stmt.setString(16, f.getFAX());
      stmt.setString(17, f.getContato());
      stmt.setString(18, f.getNroBanco());
      stmt.setString(19, f.getNroAgencia());
      stmt.setString(20, f.getContaCorrente());
      stmt.setString(21, f.geteMail());
      stmt.setString(22, f.getSite());
      stmt.setBoolean(23, f.getAtivo());
      stmt.setString(24, f.getCPF());
      stmt.setString(25, f.getRG());
      stmt.setString(26, f.getNome());
      
      
      stmt.executeUpdate(sql);

     // stmt.execute(sql,Statement.RETURN_GENERATED_KEYS);

      ResultSet rs = stmt.getGeneratedKeys(); 
      int idGerado = 0;
      if(rs.next()){
          idGerado = rs.getInt(0);
      }
      String ret = "";
      if (idGerado != 1){

          ret = this.salvaVendedores(f.getListaVendedores(), idGerado);
      }

      stmt.close();
      return "true";

      } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
            //return "";
        }

Cara, sempre que tiver problemas:

  1. Leia com atenção a mensagem de erro. Ela diz:
    Column Index out of range, 0 < 1.
    "Índice da coluna fora do intervalo. 0 < 1".

Vá até sua linha 54, você está tentando obter algum índice 0?

  1. Veja a documentação do método onde dá erro. A documentação do getInt é essa aqui:

[quote]getInt

int getInt(int columnIndex)
throws SQLException

Retrieves the value of the designated column in the current row of this ResultSet object as an int in the Java programming language.

Parameters:
    columnIndex - [b]the first column is 1[/b], the second is 2, ... 
Returns:
    the column value; if the value is SQL NULL, the value returned is 0 
Throws:
    SQLException - if the columnIndex is not valid; if a database access error occurs or this method is called on a closed result set

[/quote]
http://download.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#getInt(int)

  1. Jamais tente corrigir coisas por tentativa e erro. Se o erro estava na linha 54, por que você mudou a linha do execute?

  2. Para corrigir nesse caso, apenas faça o que a documentação está mandando. Use o índice 1 no lugar do 0:

Deixe o executeUpdate sem o parâmetro sql dentro.

Além disso, procure ler e entender o que seus colegas de fórum estão falando. Eu também já tinha falado que os índices começavam em 1 a poucos posts atrás.

Olá,

desculpe pelas perguntas desnecessarias, consegui arrumar o erro.

Grato pela ajuda.

Olá,

estou com uma duvida, tenho um formulario e no mesmo tem varias abas (dados, ICMS, PIS, …) , porem estou querendo somente cadastrar os dados de uma aba especifica, e ai ela ocorre o null Pointer de campos de outras abas, olhei no meu Mysql e as mesmas encontram desmarcada o campo not null, alguem poderia me dar uma mão?

Segue a parte do código do Insert abaixo, grato.


       try {

           String sql = "INSERT INTO "
             + "produto(cod_prod,cod_barra,descricao,id_grupo,id_unidade,peso_bruto,peso_liquido,ncm,id_marca,"
                   + "lucro_minimo,lucro_atacado,lucro_promocao,lucro_varejo,valor_compra,valor_minimo,valor_atacado,"
                   + "valor_promocao,valor_venda,quant_estoque,estoque_minimo,frete,despesas,bloqueado,gera_estoque,"
                   + "orig_icms,cst_icms,mod_bc_icms,p_red_bc_icms,v_bc_icms,p_icms,v_icms,mod_bc_st_icms,p_mvast_icms,"
                   + "p_red_bc_st_icms,v_bc_st_icms,p_icms_st,v_icms_st,cst_pis,v_bc_pis,p_pis,v_pis,q_bc_prod_pis,v_aliq_prod_pis,"
                   + "cst_cofins,v_bc_cofins,p_cofins,v_cofins,q_bc_prod_cofins,v_aliq_prod_cofins,totalizador,cst_ipi,"
                   + "classe_enquad_ipi,cod_enquad_ipi,cnpj_prod_ipi,cod_selo_contr_ipi,quant_selo_contr_ipi,tipo_calculo,"
                   + "val_bc_ipi,aliquota_ipi,quant_total_un_padrao_ipi,valor_unidade_ipi,valor_ipi,preco_fabrica,referencia,"
                   + "numeracao,produto_composto,id_subgrupo,idcst_icms,idmod_bc,idmod_bc_st,idcst_cofins,idcst_ipi,idcst_pis"
                   + ") "
             + "VALUES (?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?,"
             + " ?, ?, ?, ?, ?, ?, ?)";


              PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql);


      stmt.setString(1, p.getCodProduto());
      stmt.setString(2, p.getCodBarra());
      stmt.setString(3, p.getDescricao());
      stmt.setInt(4, p.getIdGrupo());
      stmt.setInt(5, p.getIdUnidade());
      stmt.setBigDecimal(6, p.getPesoBruto());
      stmt.setBigDecimal(7, p.getPesoLiquido());
      stmt.setString(8, p.getNCM());
      stmt.setInt(9, p.getIdMarca());
      stmt.setBigDecimal(10, p.getLucroMinimo());
      stmt.setBigDecimal(11, p.getLucroAtacado());
      stmt.setBigDecimal(12, p.getLucroPromocao());
      stmt.setBigDecimal(13, p.getLucroVarejo());
      stmt.setBigDecimal(14, p.getValorCompra());
      stmt.setBigDecimal(15, p.getValorMinimo());
      stmt.setBigDecimal(16, p.getValorAtacado());
      stmt.setBigDecimal(17, p.getValorPromocao());
      stmt.setBigDecimal(18, p.getValorVenda());
      stmt.setBigDecimal(19, p.getQuantEstoque());
      stmt.setBigDecimal(20, p.getEstoqueMinimo());
      stmt.setBigDecimal(21, p.getFrete());
      stmt.setBigDecimal(22, p.getDespesas());
      stmt.setBoolean(23, p.isBloqsueado());
      stmt.setBoolean(24, p.isGerasEstoque());
      stmt.setInt(25, p.getOrigICMS());
      stmt.setString(26, p.getCSTICMS());
       stmt.setInt(27, p.getModBCICMS());
      stmt.setBigDecimal(28, p.getpRedBCICMS());
      stmt.setBigDecimal(29, p.getvBCICMS());
      stmt.setBigDecimal(30, p.getpICMS());
      stmt.setBigDecimal(31, p.getvICMS());
      stmt.setInt(32, p.getModBCSTICMS());
      stmt.setBigDecimal(33, p.getpMVASTICMS());
      stmt.setBigDecimal(34, p.getpRedBCSTICMS());
      stmt.setBigDecimal(35, p.getvBCSTICMS());
      stmt.setBigDecimal(36, p.getpICMSST());
      stmt.setBigDecimal(37, p.getvICMSST());
      stmt.setString(38, p.getCSTPIS());
      stmt.setBigDecimal(39, p.getvBCPIS());
      stmt.setBigDecimal(40, p.getpPIS());
      stmt.setBigDecimal(41, p.getvPIS());
      stmt.setBigDecimal(42, p.getqBCProdPIS());
      stmt.setBigDecimal(43, p.getvAliqProdPIS());
      stmt.setString(44, p.getCSTCOFINS());
      stmt.setBigDecimal(45, p.getvBCCOFINS());
      stmt.setBigDecimal(46, p.getpCOFINS());
      stmt.setBigDecimal(47, p.getvCOFINS());
      stmt.setBigDecimal(48, p.getqBCProdCOFINS());
      stmt.setBigDecimal(49, p.getvAliqProdCOFINS());
      stmt.setString(50, p.getTotalizador());
      stmt.setString(51, p.getCSTIPI());
      stmt.setString(52, p.getClasseEnquadIPI());
      stmt.setString(53, p.getCodEnquadIPI());
      stmt.setString(54, p.getCNPJProdIPI());
      stmt.setString(55, p.getCodSeloContrIPI());
      stmt.setString(56, p.getQuantSeloContrIPI());
      stmt.setString(57, p.getTipoCalculo());
      stmt.setBigDecimal(58, p.getValBCIPI());
      stmt.setBigDecimal(59, p.getAliquotaIPI());
      stmt.setBigDecimal(60, p.getQuantTotalUnPadraoIPI());
      stmt.setBigDecimal(61, p.getValorUnidadeIPI());
      stmt.setBigDecimal(62, p.getValorIPI());
      stmt.setBigDecimal(63, p.getPrecoFabrica());
      stmt.setString(64, p.getReferencia());
      stmt.setString(65, p.getNumeracao());
      stmt.setBoolean(66, p.isProdutoComposto());
      stmt.setInt(67, p.getIdSubGrupo());
      stmt.setInt(68, p.getIdcst_icms());
      stmt.setInt(69, p.getIdmod_bc());
      stmt.setInt(70, p.getIdmod_bc_st());
      stmt.setInt(71, p.getIdcst_cofins());
      stmt.setInt(72, p.getIdcst_ipi());
      stmt.setInt(73, p.getIdcst_pis());


            stmt.execute();
            stmt.close();
            return "true";
        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        }

OLá pessoal,

referente ao erro acima eu ja resolvi, porem estou com um outro probleminha aqui, estou tentando dar um update em uma tabela e a mesma retorna o seguinte erro:

“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘idcst_icms=‘2’ idmod_bc=‘3’ idmod_bc_st=‘0’ idcst_cofins=‘0’ idcst_ipi=‘0’ idcst’ at line 1”

Os campos falados no erro e seus valores são valores que eu setei na mão caso eles sejam null.

Segue o código do update:

   public String atualiza(Produto p){
        try {
            String sql = "UPDATE produto "
                    + "SET cod_prod='"+ p.getCodProduto() +"',"
                    + "cod_barra='"+ p.getCodBarra() +"',"
                    + "descricao='"+ p.getDescricao() +"',"
                    + "id_grupo='"+ p.getIdGrupo() +"',"
                    + "id_unidade='"+ p.getIdUnidade() +"',"
                    + "peso_bruto='"+ p.getPesoBruto() +"',"                    
                    + "peso_liquido='"+ p.getPesoLiquido() +"',"
                    + "ncm='"+ p.getNCM() +"',"
                    + "id_marca='"+ p.getIdMarca() +"',"
                    + "lucro_minimo='"+ p.getLucroMinimo() +"',"
                    + "lucro_atacado='"+ p.getLucroAtacado() +"',"
                    + "lucro_promocao='"+ p.getLucroPromocao() +"',"
                    + "lucro_varejo='"+ p.getLucroVarejo() +"',"
                    + "valor_compra='"+ p.getValorCompra() +"',"
                    + "valor_minimo='"+ p.getValorMinimo() +"',"
                    + "valor_atacado='"+ p.getValorAtacado() +"',"
                    + "valor_promocao='"+ p.getValorPromocao() +"',"
                    + "valor_venda='"+ p.getValorVenda() +"',"
                    + "quant_estoque='"+ p.getQuantEstoque() +"',"
                    + "estoque_minimo='"+ p.getEstoqueMinimo() +"',"
                    + "frete='"+ p.getFrete() +"',"
                    + "despesas='"+ p.getDespesas() +"',"
                    + "bloqueado='"+ (p.isBloqsueado()?1:0) +"',"
                    + "gera_estoque='"+ (p.isGerasEstoque()?1:0) +"',"
                    + "orig_icms='"+ p.getOrigICMS() +"',"
                    + "cst_icms='"+ p.getCSTICMS() +"',"
                    + "mod_bc_icms='"+ p.getModBCICMS() +"',"
                    + "p_red_bc_icms='"+ p.getpRedBCICMS() +"',"
                    + "v_bc_icms='"+ p.getvBCICMS() +"',"
                    + "p_icms='"+ p.getpICMS() +"',"
                    + "v_icms='"+ p.getvICMS() +"',"
                    + "mod_bc_st_icms='"+ p.getModBCSTICMS() +"',"
                    + "p_mvast_icms='"+ p.getpMVASTICMS() +"',"
                    + "p_red_bc_st_icms='"+ p.getpRedBCSTICMS() +"',"
                    + "v_bc_st_icms='"+ p.getvBCSTICMS() +"',"
                    + "p_icms_st='"+ p.getpICMSST() +"',"
                    + "v_icms_st='"+ p.getvICMSST() +"',"
                    + "cst_pis='"+ p.getCSTPIS() +"',"
                    + "v_bc_pis='"+ p.getvBCPIS() +"',"
                    + "p_pis='"+ p.getpPIS() +"',"
                    + "v_pis='"+ p.getvPIS() +"',"
                    + "q_bc_prod_pis='"+ p.getqBCProdPIS() +"',"
                    + "v_aliq_prod_pis='"+ p.getvAliqProdPIS() +"',"
                    + "cst_cofins='"+ p.getCSTCOFINS() +"',"
                    + "v_bc_cofins='"+ p.getvBCCOFINS() +"',"
                    + "p_cofins='"+ p.getpCOFINS() +"',"
                    + "v_cofins='"+ p.getvCOFINS() +"',"
                    + "q_bc_prod_cofins='"+ p.getqBCProdCOFINS() +"',"
                    + "v_aliq_prod_cofins='"+ p.getvAliqProdCOFINS() +"',"
                    + "totalizador='"+ p.getTotalizador() +"',"
                    + "cst_ipi='"+ p.getCSTIPI() +"',"
                    + "classe_enquad_ipi='"+ p.getClasseEnquadIPI() +"',"
                    + "cod_enquad_ipi='"+ p.getCodEnquadIPI() +"',"
                    + "cnpj_prod_ipi='"+ p.getCNPJProdIPI() +"',"
                    + "cod_selo_contr_ipi='"+ p.getCodSeloContrIPI() +"',"
                    + "quant_selo_contr_ipi='"+ p.getQuantSeloContrIPI() +"',"
                    + "tipo_calculo='"+ p.getTipoCalculo() +"',"
                    + "val_bc_ipi='"+ p.getValBCIPI() +"',"
                    + "aliquota_ipi='"+ p.getAliquotaIPI() +"',"
                    + "quant_total_un_padrao_ipi='"+ p.getQuantTotalUnPadraoIPI() +"',"
                    + "valor_unidade_ipi='"+ p.getValorUnidadeIPI() +"',"
                    + "valor_ipi='"+ p.getValorIPI() +"',"
                    + "preco_fabrica='"+ p.getPrecoFabrica() +"',"
                    + "referencia='"+ p.getReferencia() +"',"
                    + "numeracao='"+ p.getNumeracao() +"', "
                    + "produto_composto='"+ p.isProdutoComposto() +"', "
                    + "id_subgrupo='"+ p.getIdSubGrupo() +"' "
                    + "idcst_icms='"+ p.getIdcst_icms() +"' "
                    + "idmod_bc='"+ p.getIdmod_bc() +"' "
                    + "idmod_bc_st='"+ p.getIdmod_bc_st() +"' "
                    + "idcst_cofins='"+ p.getIdcst_cofins() +"' "
                    + "idcst_ipi='"+ p.getIdcst_ipi() +"' "
                    + "idcst_pis='"+ p.getIdcst_pis() +"' "

                    + "WHERE id_produto = '"+ p.getIdProduto() +"';" ;


            Statement stmt = conexao.createStatement();
            stmt.executeUpdate(sql);
            stmt.close();
            return "true";
        } catch (SQLException e) {
            e.printStackTrace();
            return e.getMessage();
        }
    }

Alterei o código acima com o PreparedStatement, porem ainda esta acusando o mesmo erro, alguem poderia me ajudar??

                     String sql = "UPDATE produto "
                    + "SET cod_prod= ? ,"
                    + "cod_barra= ? ,"
                    + "descricao=?,"
                    + "id_grupo=?,"
                    + "id_unidade=?,"
                    + "peso_bruto=?,"
                    + "peso_liquido=?,"
                    + "ncm=?,"
                   + "id_marca=?,"
                   + "lucro_minimo=?,"
                   + "lucro_atacado=?,"
                   + "lucro_promocao=?,"
                   + "lucro_varejo=?,"
                   + "valor_compra=?,"
                    + "valor_minimo=?,"
                   + "valor_atacado=?,"
                    + "valor_promocao=?,"
                    + "valor_venda=?,"
                    + "quant_estoque=?,"
                    + "estoque_minimo=?,"
                    + "frete=?,"
                    + "despesas=?,"
                    + "bloqueado=?,"
                    + "gera_estoque=?,"
                    + "orig_icms=?,"
                    + "cst_icms=?,"
                    + "mod_bc_icms=?,"
                    + "p_red_bc_icms=?,"
                    + "v_bc_icms=?,"
                    + "p_icms=?,"
                    + "v_icms=?,"
                    + "mod_bc_st_icms=?,"
                    + "p_mvast_icms=?,"
                   + "p_red_bc_st_icms=?,"
                   + "v_bc_st_icms=?,"
                   + "p_icms_st=?,"
                    + "v_icms_st=?,"
                    + "cst_pis=?,"
                    + "v_bc_pis=?,"
                    + "p_pis=?,"
                    + "v_pis=?,"
                    + "q_bc_prod_pis=?,"
                    + "v_aliq_prod_pis=?,"
                    + "cst_cofins=?,"
                    + "v_bc_cofins=?,"
                    + "p_cofins=?,"
                    + "v_cofins=?,"
                    + "q_bc_prod_cofins=?,"
                    + "v_aliq_prod_cofins=?,"
                    + "totalizador=?,"
                    + "cst_ipi=?,"
                    + "classe_enquad_ipi=?,"
                    + "cod_enquad_ipi=?,"
                    + "cnpj_prod_ipi=?,"
                    + "cod_selo_contr_ipi=?,"
                    + "quant_selo_contr_ipi=?,"
                    + "tipo_calculo=?,"
                    + "val_bc_ipi=?,"
                    + "aliquota_ipi=?,"
                    + "quant_total_un_padrao_ipi=?,"
                    + "valor_unidade_ipi=?,"
                   + "valor_ipi=?,"
                    + "preco_fabrica=?,"
                    + "referencia=?,"
                    + "numeracao=?, "
                    + "produto_composto=?, "
                    + "id_subgrupo=? "
                    + "idcst_icms=? "
                    + "idmod_bc=? "
                    + "idmod_bc_st=? "
                    + "idcst_cofins=? "
                    + "idcst_ipi=? "
                    + "idcst_pis=? "
                     + "WHERE id_produto = ?";


   PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql);


                   
                   stmt.setString(1, p.getCodProduto());
      stmt.setString(2, p.getCodBarra());
      stmt.setString(3, p.getDescricao());
      stmt.setInt(4, p.getIdGrupo());
      stmt.setInt(5, p.getIdUnidade());
      stmt.setBigDecimal(6, p.getPesoBruto());
      stmt.setBigDecimal(7, p.getPesoLiquido());
      stmt.setString(8, p.getNCM());
      stmt.setInt(9, p.getIdMarca());
      stmt.setBigDecimal(10, p.getLucroMinimo());
      stmt.setBigDecimal(11, p.getLucroAtacado());
      stmt.setBigDecimal(12, p.getLucroPromocao());
      stmt.setBigDecimal(13, p.getLucroVarejo());
      stmt.setBigDecimal(14, p.getValorCompra());
      stmt.setBigDecimal(15, p.getValorMinimo());
      stmt.setBigDecimal(16, p.getValorAtacado());
      stmt.setBigDecimal(17, p.getValorPromocao());
      stmt.setBigDecimal(18, p.getValorVenda());
      stmt.setBigDecimal(19, p.getQuantEstoque());
      stmt.setBigDecimal(20, p.getEstoqueMinimo());
      stmt.setBigDecimal(21, p.getFrete());
      stmt.setBigDecimal(22, p.getDespesas());
      stmt.setBoolean(23, p.isBloqsueado());
      stmt.setBoolean(24, p.isGerasEstoque());
      stmt.setInt(25, p.getOrigICMS());
      stmt.setString(26, p.getCSTICMS());
       stmt.setInt(27, p.getModBCICMS());
      stmt.setBigDecimal(28, p.getpRedBCICMS());
      stmt.setBigDecimal(29, p.getvBCICMS());
      stmt.setBigDecimal(30, p.getpICMS());
      stmt.setBigDecimal(31, p.getvICMS());
      stmt.setInt(32, p.getModBCSTICMS());
      stmt.setBigDecimal(33, p.getpMVASTICMS());
      stmt.setBigDecimal(34, p.getpRedBCSTICMS());
      stmt.setBigDecimal(35, p.getvBCSTICMS());
      stmt.setBigDecimal(36, p.getpICMSST());
      stmt.setBigDecimal(37, p.getvICMSST());
      stmt.setString(38, p.getCSTPIS());
      stmt.setBigDecimal(39, p.getvBCPIS());
      stmt.setBigDecimal(40, p.getpPIS());
      stmt.setBigDecimal(41, p.getvPIS());
      stmt.setBigDecimal(42, p.getqBCProdPIS());
      stmt.setBigDecimal(43, p.getvAliqProdPIS());
      stmt.setString(44, p.getCSTCOFINS());
      stmt.setBigDecimal(45, p.getvBCCOFINS());
      stmt.setBigDecimal(46, p.getpCOFINS());
      stmt.setBigDecimal(47, p.getvCOFINS());
      stmt.setBigDecimal(48, p.getqBCProdCOFINS());
      stmt.setBigDecimal(49, p.getvAliqProdCOFINS());
      stmt.setString(50, p.getTotalizador());
      stmt.setString(51, p.getCSTIPI());
      stmt.setString(52, p.getClasseEnquadIPI());
      stmt.setString(53, p.getCodEnquadIPI());
      stmt.setString(54, p.getCNPJProdIPI());
      stmt.setString(55, p.getCodSeloContrIPI());
      stmt.setString(56, p.getQuantSeloContrIPI());
      stmt.setString(57, p.getTipoCalculo());
      stmt.setBigDecimal(58, p.getValBCIPI());
      stmt.setBigDecimal(59, p.getAliquotaIPI());
      stmt.setBigDecimal(60, p.getQuantTotalUnPadraoIPI());
      stmt.setBigDecimal(61, p.getValorUnidadeIPI());
      stmt.setBigDecimal(62, p.getValorIPI());
      stmt.setBigDecimal(63, p.getPrecoFabrica());
      stmt.setString(64, p.getReferencia());
      stmt.setString(65, p.getNumeracao());
      stmt.setBoolean(66, p.isProdutoComposto());
      stmt.setInt(67, p.getIdSubGrupo());
      stmt.setInt(68, p.getIdcst_icms());
      stmt.setInt(69, p.getIdmod_bc());
      stmt.setInt(70, p.getIdmod_bc_st());
      stmt.setInt(71, p.getIdcst_cofins());
      stmt.setInt(72, p.getIdcst_ipi());
      stmt.setInt(73, p.getIdcst_pis());
      stmt.setInt(74, p.getIdProduto());



            stmt.executeUpdate();
            stmt.close();
            return "true";
        } catch (SQLException e) {
            e.printStackTrace();
            return e.getMessage();
        }

Esse erro é bem claro. Ele diz que há erro de sintaxe na sua SQL.
Sempre que tiver esse erro, revise sua query pois com certeza houve algum erro de digitação, ou problema na hora do ctrl+c ctrl+v.

Note que esses sete campos:

[code]

  • "id_subgrupo=? "
  • "idcst_icms=? "
  • "idmod_bc=? "
  • "idmod_bc_st=? "
  • "idcst_cofins=? "
  • "idcst_ipi=? "
  • "idcst_pis=? " [/code]

Estão sem a vírgula os separando.

Outra coisa. Agora que percebi, mas esse tópico nunca foi de Java Básico. Temos um fórum específico para dúvidas de bancos de dados, que é o fórum de persistência.
Vou mover o tópico para lá, mas procure ler com atenção a descrição dos fóruns antes de postar suas dúvidas, ok?

Olá, desculpe pela postagem no lugar errado.

Estou com o erro de sintaxe abaixo, revisei meu código porem não consegui verificar onde está o erro, alguem poderia me ajudar?

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘WHERE id_produto =‘8’’ at line 1


    public String atualiza(Produto p){
        try {
            String sql = "UPDATE produto "
                    + "SET cod_prod='"+ p.getCodProduto() +"',"
                    + "cod_barra='"+ p.getCodBarra() +"',"
                    + "descricao='"+ p.getDescricao() +"',"
                    + "id_grupo='"+ p.getIdGrupo() +"',"
                    + "id_unidade='"+ p.getIdUnidade() +"',"
                    + "peso_bruto='"+ p.getPesoBruto() +"',"
                    + "peso_liquido='"+ p.getPesoLiquido() +"',"
                    + "ncm='"+ p.getNCM() +"',"
                    + "id_marca='"+ p.getIdMarca() +"',"
                    + "lucro_minimo='"+ p.getLucroMinimo() +"',"
                    + "lucro_atacado='"+ p.getLucroAtacado() +"',"
                    + "lucro_promocao='"+ p.getLucroPromocao() +"',"
                    + "lucro_varejo='"+ p.getLucroVarejo() +"',"
                    + "valor_compra='"+ p.getValorCompra() +"',"
                    + "valor_minimo='"+ p.getValorMinimo() +"',"
                    + "valor_atacado='"+ p.getValorAtacado() +"',"
                    + "valor_promocao='"+ p.getValorPromocao() +"',"
                    + "valor_venda='"+ p.getValorVenda() +"',"
                    + "quant_estoque='"+ p.getQuantEstoque() +"',"
                    + "estoque_minimo='"+ p.getEstoqueMinimo() +"',"
                    + "frete='"+ p.getFrete() +"',"
                    + "despesas='"+ p.getDespesas() +"',"
                    + "bloqueado='"+ (p.isBloqsueado()?1:0) +"',"
                    + "gera_estoque='"+ (p.isGerasEstoque()?1:0) +"',"
                    + "orig_icms='"+ p.getOrigICMS() +"',"
                    + "cst_icms='"+ p.getCSTICMS() +"',"
                    + "mod_bc_icms='"+ p.getModBCICMS() +"',"
                    + "p_red_bc_icms='"+ p.getpRedBCICMS() +"',"
                    + "v_bc_icms='"+ p.getvBCICMS() +"',"
                    + "p_icms='"+ p.getpICMS() +"',"
                    + "v_icms='"+ p.getvICMS() +"',"
                    + "mod_bc_st_icms='"+ p.getModBCSTICMS() +"',"
                    + "p_mvast_icms='"+ p.getpMVASTICMS() +"',"
                    + "p_red_bc_st_icms='"+ p.getpRedBCSTICMS() +"',"
                    + "v_bc_st_icms='"+ p.getvBCSTICMS() +"',"
                    + "p_icms_st='"+ p.getpICMSST() +"',"
                    + "v_icms_st='"+ p.getvICMSST() +"',"
                    + "cst_pis='"+ p.getCSTPIS() +"',"
                    + "v_bc_pis='"+ p.getvBCPIS() +"',"
                    + "p_pis='"+ p.getpPIS() +"',"
                    + "v_pis='"+ p.getvPIS() +"',"
                    + "q_bc_prod_pis='"+ p.getqBCProdPIS() +"',"
                    + "v_aliq_prod_pis='"+ p.getvAliqProdPIS() +"',"
                    + "cst_cofins='"+ p.getCSTCOFINS() +"',"
                    + "v_bc_cofins='"+ p.getvBCCOFINS() +"',"
                    + "p_cofins='"+ p.getpCOFINS() +"',"
                    + "v_cofins='"+ p.getvCOFINS() +"',"
                    + "q_bc_prod_cofins='"+ p.getqBCProdCOFINS() +"',"
                    + "v_aliq_prod_cofins='"+ p.getvAliqProdCOFINS() +"',"
                    + "totalizador='"+ p.getTotalizador() +"',"
                    + "cst_ipi='"+ p.getCSTIPI() +"',"
                    + "classe_enquad_ipi='"+ p.getClasseEnquadIPI() +"',"
                    + "cod_enquad_ipi='"+ p.getCodEnquadIPI() +"',"
                    + "cnpj_prod_ipi='"+ p.getCNPJProdIPI() +"',"
                    + "cod_selo_contr_ipi='"+ p.getCodSeloContrIPI() +"',"
                    + "quant_selo_contr_ipi='"+ p.getQuantSeloContrIPI() +"',"
                    + "tipo_calculo='"+ p.getTipoCalculo() +"',"
                    + "val_bc_ipi='"+ p.getValBCIPI() +"',"
                    + "aliquota_ipi='"+ p.getAliquotaIPI() +"',"
                    + "quant_total_un_padrao_ipi='"+ p.getQuantTotalUnPadraoIPI() +"',"
                    + "valor_unidade_ipi='"+ p.getValorUnidadeIPI() +"',"
                    + "valor_ipi='"+ p.getValorIPI() +"',"
                    + "preco_fabrica='"+ p.getPrecoFabrica() +"',"
                    + "referencia='"+ p.getReferencia() +"',"
                    + "numeracao='"+ p.getNumeracao() +"', "
                    + "produto_composto='"+ p.isProdutoComposto() +"', "
                    + "id_subgrupo='"+ p.getIdSubGrupo() +"', "
                    + "idcst_icms='"+ p.getIdcst_icms() +"', "
                    + "idmod_bc='"+ p.getIdmod_bc() +"', "
                    + "idmod_bc_st='"+ p.getIdmod_bc_st() +"', "
                    + "idcst_cofins='"+ p.getIdcst_cofins() +"', "
                    + "idcst_ipi='"+ p.getIdcst_ipi() +"', "
                    + "idcst_pis='"+ p.getIdcst_pis() +"', "
                    + "WHERE id_produto ='"+ p.getIdProduto() +"'" ;



            Statement stmt = conexao.createStatement();
            stmt.executeUpdate(sql);

            
            stmt.close();
            return "true";
        } catch (SQLException e) {
            e.printStackTrace();
            return e.getMessage();
        }
    }

Por que você voltou atrás no PreparedStatement?

O problema é que provavelmente id_produto é um int. Então, não vai entre aspas simples.
Note que se você tivesse mantido o PreparedStatement, esse problema não teria ocorrido. O PreparedStatement sabe exatamente o tipo do campo, e isso elimina a necessidade de aspas, ou ter que conhecer algum formato específico do banco (separador de decimais ter vírgula ou ponto, ordem dos campos de data, por exemplo).

Aliás, também não daria problema se algum produto seu tiver apostrofe no nome, como “Batatas do Mac Donald’s”, sem o PreparedStatement, sua query vai dar erro.

sim o id_produto é um int, tirei as aspas simples como vc flw porem o erro ainda persiste.

“WHERE id_produto =”+ p.getIdProduto() +";" ;

Referente ao PreparedStatement, tirei ele pois estava dando o seguinte erro:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘=‘02’,cod_barra= ‘02’,descricao=‘pok21’,id_grupo=8,id_unidade=1,peso_bruto=321.0’ at line 1


  public String atualiza(Produto p){
        try {


                     String sql = "UPDATE produto"
                    + "SET cod_prod=?,"
                    + "cod_barra= ?,"
                    + "descricao=?,"
                    + "id_grupo=?,"
                    + "id_unidade=?,"
                    + "peso_bruto=?,"
                    + "peso_liquido=?,"
                    + "ncm=?,"
                   + "id_marca=?,"
                   + "lucro_minimo=?,"
                   + "lucro_atacado=?,"
                   + "lucro_promocao=?,"
                   + "lucro_varejo=?,"
                   + "valor_compra=?,"
                    + "valor_minimo=?,"
                   + "valor_atacado=?,"
                    + "valor_promocao=?,"
                    + "valor_venda=?,"
                    + "quant_estoque=?,"
                    + "estoque_minimo=?,"
                    + "frete=?,"
                    + "despesas=?,"
                    + "bloqueado=?,"
                    + "gera_estoque=?,"
                    + "orig_icms=?,"
                    + "cst_icms=?,"
                    + "mod_bc_icms=?,"
                    + "p_red_bc_icms=?,"
                    + "v_bc_icms=?,"
                    + "p_icms=?,"
                    + "v_icms=?,"
                    + "mod_bc_st_icms=?,"
                    + "p_mvast_icms=?,"
                   + "p_red_bc_st_icms=?,"
                   + "v_bc_st_icms=?,"
                   + "p_icms_st=?,"
                    + "v_icms_st=?,"
                    + "cst_pis=?,"
                    + "v_bc_pis=?,"
                    + "p_pis=?,"
                    + "v_pis=?,"
                    + "q_bc_prod_pis=?,"
                    + "v_aliq_prod_pis=?,"
                    + "cst_cofins=?,"
                    + "v_bc_cofins=?,"
                    + "p_cofins=?,"
                    + "v_cofins=?,"
                    + "q_bc_prod_cofins=?,"
                    + "v_aliq_prod_cofins=?,"
                    + "totalizador=?,"
                    + "cst_ipi=?,"
                    + "classe_enquad_ipi=?,"
                    + "cod_enquad_ipi=?,"
                    + "cnpj_prod_ipi=?,"
                    + "cod_selo_contr_ipi=?,"
                    + "quant_selo_contr_ipi=?,"
                    + "tipo_calculo=?,"
                    + "val_bc_ipi=?,"
                    + "aliquota_ipi=?,"
                    + "quant_total_un_padrao_ipi=?,"
                    + "valor_unidade_ipi=?,"
                   + "valor_ipi=?,"
                    + "preco_fabrica=?,"
                    + "referencia=?,"
                    + "numeracao=?, "
                    + "produto_composto=?, "
                    + "id_subgrupo=?, "
                    + "idcst_icms=?, "
                    + "idmod_bc=?, "
                    + "idmod_bc_st=?, "
                    + "idcst_cofins=?, "
                    + "idcst_ipi=?, "
                    + "idcst_pis=?, "
                     + "WHERE id_produto = ?;";



             PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql);


                   
      stmt.setString(1, p.getCodProduto());
      stmt.setString(2, p.getCodBarra());
      stmt.setString(3, p.getDescricao());
      stmt.setInt(4, p.getIdGrupo());
      stmt.setInt(5, p.getIdUnidade());
      stmt.setBigDecimal(6, p.getPesoBruto());
      stmt.setBigDecimal(7, p.getPesoLiquido());
      stmt.setString(8, p.getNCM());
      stmt.setInt(9, p.getIdMarca());
      stmt.setBigDecimal(10, p.getLucroMinimo());
      stmt.setBigDecimal(11, p.getLucroAtacado());
      stmt.setBigDecimal(12, p.getLucroPromocao());
      stmt.setBigDecimal(13, p.getLucroVarejo());
      stmt.setBigDecimal(14, p.getValorCompra());
      stmt.setBigDecimal(15, p.getValorMinimo());
      stmt.setBigDecimal(16, p.getValorAtacado());
      stmt.setBigDecimal(17, p.getValorPromocao());
      stmt.setBigDecimal(18, p.getValorVenda());
      stmt.setBigDecimal(19, p.getQuantEstoque());
      stmt.setBigDecimal(20, p.getEstoqueMinimo());
      stmt.setBigDecimal(21, p.getFrete());
      stmt.setBigDecimal(22, p.getDespesas());
      stmt.setBoolean(23, p.isBloqsueado());
      stmt.setBoolean(24, p.isGerasEstoque());
      stmt.setInt(25, p.getOrigICMS());
      stmt.setString(26, p.getCSTICMS());
       stmt.setInt(27, p.getModBCICMS());
      stmt.setBigDecimal(28, p.getpRedBCICMS());
      stmt.setBigDecimal(29, p.getvBCICMS());
      stmt.setBigDecimal(30, p.getpICMS());
      stmt.setBigDecimal(31, p.getvICMS());
      stmt.setInt(32, p.getModBCSTICMS());
      stmt.setBigDecimal(33, p.getpMVASTICMS());
      stmt.setBigDecimal(34, p.getpRedBCSTICMS());
      stmt.setBigDecimal(35, p.getvBCSTICMS());
      stmt.setBigDecimal(36, p.getpICMSST());
      stmt.setBigDecimal(37, p.getvICMSST());
      stmt.setString(38, p.getCSTPIS());
      stmt.setBigDecimal(39, p.getvBCPIS());
      stmt.setBigDecimal(40, p.getpPIS());
      stmt.setBigDecimal(41, p.getvPIS());
      stmt.setBigDecimal(42, p.getqBCProdPIS());
      stmt.setBigDecimal(43, p.getvAliqProdPIS());
      stmt.setString(44, p.getCSTCOFINS());
      stmt.setBigDecimal(45, p.getvBCCOFINS());
      stmt.setBigDecimal(46, p.getpCOFINS());
      stmt.setBigDecimal(47, p.getvCOFINS());
      stmt.setBigDecimal(48, p.getqBCProdCOFINS());
      stmt.setBigDecimal(49, p.getvAliqProdCOFINS());
      stmt.setString(50, p.getTotalizador());
      stmt.setString(51, p.getCSTIPI());
      stmt.setString(52, p.getClasseEnquadIPI());
      stmt.setString(53, p.getCodEnquadIPI());
      stmt.setString(54, p.getCNPJProdIPI());
      stmt.setString(55, p.getCodSeloContrIPI());
      stmt.setString(56, p.getQuantSeloContrIPI());
      stmt.setString(57, p.getTipoCalculo());
      stmt.setBigDecimal(58, p.getValBCIPI());
      stmt.setBigDecimal(59, p.getAliquotaIPI());
      stmt.setBigDecimal(60, p.getQuantTotalUnPadraoIPI());
      stmt.setBigDecimal(61, p.getValorUnidadeIPI());
      stmt.setBigDecimal(62, p.getValorIPI());
      stmt.setBigDecimal(63, p.getPrecoFabrica());
      stmt.setString(64, p.getReferencia());
      stmt.setString(65, p.getNumeracao());
      stmt.setBoolean(66, p.isProdutoComposto());
      stmt.setInt(67, p.getIdSubGrupo());
      stmt.setInt(68, p.getIdcst_icms());
      stmt.setInt(69, p.getIdmod_bc());
      stmt.setInt(70, p.getIdmod_bc_st());
      stmt.setInt(71, p.getIdcst_cofins());
      stmt.setInt(72, p.getIdcst_ipi());
      stmt.setInt(73, p.getIdcst_pis());
      stmt.setInt(74, p.getIdProduto());


            stmt.executeUpdate();
            stmt.close();
            return "true";
        } catch (SQLException e) {
            e.printStackTrace();
            return e.getMessage();
        }
    }

Então, o erro é bem claro, existem ainda problemas na sintaxe do seu SQL.

Verifique:
a) Os tipos estão certos? Cod barra é mesmo String? Note que o statemente tem que estar em conformidade com os tipos do banco de dados, não da sua aplicação;
b) Se não falta vírgulas, ou se não ficou nenhuma aspas simples sobrando;
c) Se não faltou espaço entre uma linha e outra (note que sua SQL, do jeito que está, está com a palavra produto grudada na palavra SET, pois não há espaço nem depois de produto, nem antes de SET);

Não tem nada a ver com o fato de você usar PreparedStatement.

Fazer um código concatenando Strings como vc fez, usando o Statement é muito porco. Fica pouco legível e susceptível a erros. Conserte o que está errado no PreparedStatement, sem voltar a uma alternativa ainda pior.