Erro de sintax mysql

5 respostas
A

bom dia pessoa da GUJ, tenho uma duvida e preciso de ajuda
tenho a seguinte sql
sql = “select P.nomec AS ‘Nome Comercial’,P.nomeg AS ‘Nome generico’, P.codebarra AS ‘Codigo de Barra’, F.familia AS ‘Familia’,O.origem AS ‘Origem’,Fo.nome AS ‘Fornecedor’ from produto P, familia F, origem O,fornecedor Fo where P.fkfamilia=F.idfamilia AND P.fkorigem=O.idorigem AND P.fkfornecedor=Fo.idfornecedor AND P.codebarra=’” + modm.getNome() + “’”;

mas se a string contida no modm.getNome() conter aspas simples ou ( ’ ) ele retorna o erro de sintaxe mysql por causa de um ( ’ ) mais,
como posso resolver isso,
desde já agradeço

5 Respostas

pmlm

Se for em java, usa PreparedStatement.

A

usei o PreparedStatement, mas mesmo assim vem esse erro,
somente no select

A
public JTable PreencherTabela(String sql, JTable tabela,ModelManipulacao mod) throws SQLException {

conecta.Conectar();

try {

pst = conecta.conector.prepareStatement(sql);

<a href="//pst.setString">//pst.setString</a>(1, modm.getNome());

rs = pst.executeQuery();

<a href="//System.out.println">//System.out.println</a>("nome: "+mod.getNome());

tabela.setModel(DbUtils.resultSetToTableModel(rs));

} catch (SQLException ex) {

System.out.println("Erro: " + ex);

} finally {

conecta.Desconectar();

}
return tabela;
}

este é o codigo

A
bom dia achei uma solução mas acho que não é legal fazer desse jeito

fiz assim

if (modm.getNome().contains("’")) {

// System.out.println(“Erro”);

String nome = modm.getNome().replace("’", “’’”);

System.out.println("Nome: " + nome);

}

e resultou, mas nao estou muito convencido
pmlm

Como é que usaste o PreparedStatement?
Esta linha comentada diz que algo esta a ser mal feito

//pst.setString(1, modm.getNome());
Criado 22 de abril de 2020
Ultima resposta 22 de abr. de 2020
Respostas 5
Participantes 2