Buscar pelo id dados dos produtos no banco de dados

Bom caros nerds deste site estou desenvolvendo um sistema para concluir uma matéria da faculdade em linguagem java. Não possuo experiência então tudo que faço é pesquisando na net ok.

Bom mas a situação é a seguinte na tela de cadastro de produtos eu fiz uma tabela e o usuário iria adentrar com o código do produto e assim sendo o produto vai aparecer na tabela.

Assim sendo fiz o método abaixo dentro da daoproduto para retornar justamente todos os dados buscando pelo ID

public BeansProduto busProduto(BeansProduto mod) {//INSTANCIA PARA O BOTAO BUSCAR
conn.conexao();
conn.executaSql(" select * from produto where id_produto like’%" + mod.getPesquisar() + “%’”);
try {
conn.rs.first();//filtra o primeiro resultado encontrado no banco
buscaNomeFornecedor(conn.rs.getInt(“id_fornecedor”));
mod.setIdProduto(conn.rs.getInt(“id_produto”));
mod.setNomeProduto(conn.rs.getString(“nome_produto”));
mod.setLote(conn.rs.getInt(“lote_produto”));
mod.setPrecoCompra(conn.rs.getFloat(“preco_compra”));
mod.setPrecoVenda(conn.rs.getFloat(“preco_venda”));
mod.setQtdProduto(conn.rs.getInt(“quantidade”));
mod.setFornecedorProduto(nomeFornecedor);

    }

Este é o evento que arrumei no botão de pesquisar

private void jButtonPesquisarActionPerformed(java.awt.event.ActionEvent evt) {
mod.setPesquisar(jTextFieldPesquisar.getText()); // Seta o bato pesquisar
BeansProduto model = control.busProduto(mod); // instanticia a classe beans
//preenche a tabela
preencherTabela(“select *from produto where id_produto like’%” + mod.getPesquisar() + “%’”);
}

Contudo aparece a seguinte mensagem ao colocar o código de um produto e clicar no botão buscar:

Erro ao ExecutarSql:
ERRO: operador não existe: integer ~~ unknown
Dica: nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
Posição: 41

Bom seria este meu problema se você puder me auxiliar de alguma forma serei ficarei grato

Olá, não se faz like no ID. Pra id seria: where id = 2; Oq vc está fazendo é uma busca por contains em id, não tem lógica.

1 curtida

Fiz desse jeito no botão

preencherTabela(“select *from produto where id_produto '%” + mod.getPesquisar() + “%’”);

E na SQl arrumei dessa forma

conn.executaSql(" select * from produto where id_produto ‘%" + mod.getPesquisar() + "%’");

Contudo apenas mudou o erro agora apresenta este:

Erro ao ExecutarSql:
ERRO: tipo “id_produto” não existe Posição:30

Ao pesquisar no campo pesquisar um numero e clicar no botão aparece este erro

Não sei oque fazer

conn.executaSql("select * from produto where id_produto = " + mod.getPesquisar());

1 curtida

Staroski você é o cara deu certo muito obrigado mesmo

Na verdade nosso colega @Rodrigo_Void já havia te passado a solução, só que você o ignorou. :frowning:

obrigado

Cuidado com a passagem de parâmetros direto na consulta do SQL.

1 curtida

Sim, do jeito que tá aparentemente suporta SQL Injection. O certo seria parametrizar com PreparedStatement.