Erro de Sintaxe na consulta SQL no Postgres [ RESOLVIDO ]

Boa tarde pessoal, tudo bem ?
Estou com um problema na classe de consulta de um software que estou desenvolvendo. Ele acusa erro de sintaxe, segue abaixo o erro:
Driver OK!!!
Conexão OK!!!
Driver OK!!!
Conexão OK!!!
stmt
org.postgresql.util.PSQLException: ERRO: erro de sintaxe em ou próximo a “prod”
Posição: 90
erro busca produto DAO
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
at jdbc.mvc.dao.Produto_DAO.pesquisaCodBarras(Produto_DAO.java:78)

Ja executei o codigo direto no Postgres, que me retorno as informações que eu preciso sem nenhum erro. Ja olhei diversas vezes o codigo e naum acho o erro. Se voces puderem me ajudar, fico muito grato.

Ah… Segue abaixo o codigo da pesquisa:

//Método que busca o produto pelo código de barras
    public List<Det_Orcamento> pesquisaCodBarras(String codProduto) throws Exception{
        
        PreparedStatement stmt = null;
        ResultSet rs = null;
        List<Det_Orcamento> lista = new ArrayList<Det_Orcamento>();  
        int codBarras = Integer.parseInt(codProduto);
        
        try {
            String sql = "SELECT prod.cod_produto,prod.descricao,prod.marca, prod.preco,un.abreviacao"
                    + "FROM produtos prod,"
                    + "unidade un"
                    + "WHERE prod.unidade_codigo_unidade = un.codigo_unidade"                    
                    + "AND prod.cod_barras = '" + codBarras + "'";
            co.conectar();
            stmt = co.con.prepareStatement(sql);
            System.out.println("stmt");
            rs = stmt.executeQuery();
            System.out.println("Resultado da pesquisa pelo codigo de barras"+rs);
            
            while (rs.next()) {

                Det_Orcamento detOrcamento = new Det_Orcamento();

                detOrcamento.setCod_produto(rs.getInt(1));
                String descricao = rs.getString(2);
                String marca = rs.getString(3);
                detOrcamento.setProduto( descricao +" - "+ marca);                
                detOrcamento.setValor_unit_orcamento(rs.getDouble(4));
                detOrcamento.setUnidade(rs.getString(5));                

                lista.add(detOrcamento);

            }
            stmt.close();
            rs.close();

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "ERRO busca por produtos..." + ex.getMessage(), "Cadastro de Det Orçamento", 0);
            ex.printStackTrace();
            System.out.println("erro busca produto DAO");
        }
        return lista;
    }//Fim do método que busca o produto pelo codigo de barras

Obrigado galera.
Abraço

un.codigo_unidade"                      
                    + "AND...

Na verdade o seu problema não é com “prod” e sim com “un.codigo_unidadeAND…” que é o que essa sua consulta SQL está tentando fazer.

Ponha um espaço no lugar correto e seu problema ou estará resolvido, ou mudará de lugar :slight_smile:

Conselho: sempre que você tiver um erro de sintaxe desses, veja a string SQL antes.

O problema é q faltou um espaço em branco entre os nomes dos campos e a palavra “FROM”.

String sql = "SELECT prod.cod_produto,prod.descricao,prod.marca, prod.preco,un.abreviacao"  // aki falta um espaço em branco
                    + "FROM produtos prod,"  // ou pode colocar aki, da forma como está fica "..un.abreviacaoFROM produtos..."
                    // aki vc tbm terá problemas com o "unidade un" e o "WHERE"
                    + "unidade un"
                    + "WHERE prod.unidade_codigo_unidade = un.codigo_unidade" // e aki tbm!!!                      
                    + "AND prod.cod_barras = '" + codBarras + "'";  

Um conselho, já penei muitas vezes por esquecer o espaço p/ concatenar códigos SQL, hj acostumei a finalizar e iniciar cada uma das linhas SQL com espaço, as vezes até com tabulação para melhorar a visualização, comece a deixar espaço no início e no final das linhas q vc nunca mais terá esse tipo de problema!

Obrigado entanglement.
O erro era por falta de espaços mesmo. srrssrsr

Obrigado fabiocortolan, é preciso tomar mais cuidados com isso… rsrsrs

Obrigado.