Boa noite, estou tentando passar uma variável no comando SQL mas não retorna nada…
String busca_por = "cli_nome";
rs = stm.executeQuery("select * from CLIENTES where '" + busca_por + "' ILIKE '%" + busca + "%' ORDER BY cli_cod ");
quando eu coloco no lugar de busca_por o nome da coluna (cli_nome), ele vai certinho, mas se coloco a variável ele não me retorna nada, será que a forma que estou passando está correta?
[quote=JuniorMaia]Boa noite, estou tentando passar uma variável no comando SQL mas não retorna nada…
String busca_por = "cli_nome";
rs = stm.executeQuery("select * from CLIENTES where '" + busca_por + "' ILIKE '%" + busca + "%' ORDER BY cli_cod ");
quando eu coloco no lugar de busca_por o nome da coluna (cli_nome), ele vai certinho, mas se coloco a variável ele não me retorna nada, será que a forma que estou passando está correta?
[/quote]
Salve Junior,
Coloca seu codigo completo…se puder…! Outra coisa, vc esta usando qual banco de dados?
Abrass
o code é esse mesmo, e o banco é PostgreSQL
Tenta deste modo:
rs = stm.executeQuery("select * from CLIENTES where '" + busca_por + "' ILIKE '?%" + busca + "%?' ORDER BY cli_cod ");
Ou então tenta algo como:
rs = stm.executeQuery("select * from CLIENTES where '" + busca_por + "' ILIKE %%" + busca + "%% ORDER BY cli_cod ");
//Ou simplesmente sem as aspas simples
rs = stm.executeQuery("select * from CLIENTES where '" + busca_por + "' ILIKE %" + busca + "% ORDER BY cli_cod ");
Espero ter ajudado.
[quote=JuniorMaia]Boa noite, estou tentando passar uma variável no comando SQL mas não retorna nada…
String busca_por = "cli_nome";
rs = stm.executeQuery("select * from CLIENTES where '" + busca_por + "' ILIKE '%" + busca + "%' ORDER BY cli_cod ");
quando eu coloco no lugar de busca_por o nome da coluna (cli_nome), ele vai certinho, mas se coloco a variável ele não me retorna nada, será que a forma que estou passando está correta?
[/quote]
Acredito que o problema seja nessas aspas simples que está colocando no nome da tabela.
Seu código fica assim no final:
select * from CLIENTES where 'cli_nome' ILIKE '%algumnome%' ORDER BY cli_cod
O Postgresql vai tratar esse ‘cli_nome’ como um valor e não como uma coluna.
Duas sugestões:
- Utilize preparedStatement. O valor do parâmetro (variável busca) deve ser setado por fora.
- No caso do nome da coluna seria interessante você criar uma enum para isso. Com isso você limita as chances de haver um sql injection aí.
(Se deixar essa coluna ser uma string diretamente enviada pelo usuário, está pedindo pra ter problemas).
Tem ILIKE no postgresql ? nem lembro ‘-’
[quote=AbelBueno][quote=JuniorMaia]Boa noite, estou tentando passar uma variável no comando SQL mas não retorna nada…
String busca_por = "cli_nome";
rs = stm.executeQuery("select * from CLIENTES where '" + busca_por + "' ILIKE '%" + busca + "%' ORDER BY cli_cod ");
quando eu coloco no lugar de busca_por o nome da coluna (cli_nome), ele vai certinho, mas se coloco a variável ele não me retorna nada, será que a forma que estou passando está correta?
[/quote]
Acredito que o problema seja nessas aspas simples que está colocando no nome da tabela.
Seu código fica assim no final:
select * from CLIENTES where 'cli_nome' ILIKE '%algumnome%' ORDER BY cli_cod
O Postgresql vai tratar esse ‘cli_nome’ como um valor e não como uma coluna.
Duas sugestões:
- Utilize preparedStatement. O valor do parâmetro (variável busca) deve ser setado por fora.
- No caso do nome da coluna seria interessante você criar uma enum para isso. Com isso você limita as chances de haver um sql injection aí.
(Se deixar essa coluna ser uma string diretamente enviada pelo usuário, está pedindo pra ter problemas).
[/quote]
tb pensei em setar ? no lugar da variavel, mas não sei usar o prepared… tens um exemplo?