Bom dia pessoal.
Estou com um probleminha chato… e não consigo identificar.
Tenho a seguinte query:
SELECT B.PartNumber, B.CodigoInterno, B.TituloProduto
FROM ProdutoTerceiro B
WHERE
NOT EXISTS ( SELECT * FROM jos_vm_product A
WHERE A.product_sku = B.PartNumber
ORDER BY A.product_sku )
Apenas para informa, a query executa uma consulta no banco para trazer todos os produtos contidos na tabela “ProdutoTerceiro” e que não existe na tabela “jos_vm_product”.
Quando executo esse comando direto no banco (myphpadmin ou SQLDBX) não da erro nenhum… perfeito.
Porem quando passo essa query pra uma string pra poder executar em um PreparedStatement no JAVA o seguinte erro aparece:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'NOT EXISTS ( SELECT * FROM jos_vm_product A WHERE A.product_sku = B.PartNumber O' at line 1
Segue o código JAVA onde executo a query:
public void naoCadastrados() {
try {
String query = "SELECT B.PartNumber, B.CodigoInterno, B.TituloProduto "
+ "FROM ProdutoTerceiro B"
+ "WHERE "
+ "NOT EXISTS ( SELECT * FROM jos_vm_product A "
+ "WHERE A.product_sku = B.PartNumber "
+ "ORDER BY A.product_sku )";
PreparedStatement stmt = this.conexaoMYSQL.prepareStatement(query);
ResultSet rs = stmt.executeQuery();
List<Encapsulamento> retorno = new ArrayList<>();
while (rs.next()) {
Encapsulamento recebe = new Encapsulamento();
recebe.setCodigoOfficer(rs.getString("CodigoInterno"));
recebe.setPartNumber(rs.getString("PartNumber"));
recebe.setTituloProduto(rs.getString("TituloProduto"));
recebe.setFabricante(rs.getString("Fabricante"));
recebe.setLinha(rs.getString("Linha"));
recebe.setPrecoSemIcms(rs.getString("PrecosemICMS"));
recebe.setPrecoSpContrib(rs.getString("PrecoSPContrib"));
recebe.setEstoque(rs.getString("Estoque"));
recebe.setMpDoBem(rs.getString("MPdoBem"));
recebe.setFilial(rs.getString("Filial"));
retorno.add(recebe);
}
for (int i = 0; i < retorno.size(); i++) {
System.out.println(retorno.get(1));
}
Escreve.setConteudo("Banco - " + "planilha com produtos não cadastrados gerada.");
stmt.close();
rs.close();
} catch (SQLException ex) {
Manipula.erro = "Erro - (" + ex.toString() + ")";
Manipula.salvaFile("erro");
}
}
