Caros amigos estou tendo problema com uma consulta SQL.
Stringquery="select distinct produto from pedido where produto like '"+produto.getText()+"%' order by produto ; ";PreparedStatementstmt=com.prepareStatement(query);ResultSetrs;rs=stmt.executeQuery();while(rs.next()){
lista.addItem(rs.getString("produto"));}
tentei também:
[code]
String query = "select distinct produto from pedido where produto like ? order by produto ; ";
Na Primeira consulta me retorna todos os produtos, mesmo eu tendo setado o like para me trazer apenas os produtos começando "A";
Na segunda não me retorna nada.
Primeiramente, é melhor seguir o padrão de manipulação de SQL usando PrepareStatement.
Desta forma, nunca vai ter problema com SQL, a não ser por sintaxe (culpa so garotinho em frente do pc geralmente).
O ponto positivo de usa-lo é a segurança, pois evita SQL Injection…
;]
Tudo errado isso:
String query = "select distinct produto from pedido where produto like ? order by produto ; ";
Seria assim
Stringquery="SELECT DISTINCT produto FROM pedido WHERE produto LIKE %?% ORDER BY produto";
drsmachado
Tem certeza que
produto.getText()
Tem algum valor na primeira consulta, pois, caso seja uma String vazia (""), a cláusula será definida como
Sim! tem valor no campo para realizar a consulta. a respeito da 2º tentativa já utilizei as duas formas e nada.
T
tallys
[quote=charleston10]Primeiramente, é melhor seguir o padrão de manipulação de SQL usando PrepareStatement.
Desta forma, nunca vai ter problema com SQL, a não ser por sintaxe (culpa so garotinho em frente do pc geralmente).
O ponto positivo de usa-lo é a segurança, pois evita SQL Injection…
;]
Tudo errado isso:
String query = "select distinct produto from pedido where produto like ? order by produto ; ";
Seria assim
Stringquery="SELECT DISTINCT produto FROM pedido WHERE produto LIKE %?% ORDER BY produto";
Utilizei a forma que você sugeriu mas mesmo assim continua dando errado.
pmlm
A tua query estava certa:
Stringquery="select distinct produto from pedido where produto like ? order by produto";
E o parametro deve ser settado como drsmachado já havia dito:
stmt.setString(1,produto.getText().trim()+"%");
drsmachado
[quote=charleston10]
Stringquery="SELECT DISTINCT produto FROM pedido WHERE produto LIKE %?% ORDER BY produto";
Caramba, não tinha visto.
Essa forma nunca irá funcionar.
O PreparedStatement irá substituir o operador ? pelo valor informado no método setYyyy correspondente ao tipo de dado que ele representa, portanto, os % antes e após são inúteis.
charleston10
[quote=drsmachado]
charleston10:
Stringquery="SELECT DISTINCT produto FROM pedido WHERE produto LIKE %?% ORDER BY produto";
Caramba, não tinha visto.
Essa forma nunca irá funcionar.
O PreparedStatement irá substituir o operador ? pelo valor informado no método setYyyy correspondente ao tipo de dado que ele representa, portanto, os % antes e após são inúteis.
Nem comento, como iria dar errado ? (rsrs)
Entao acabei de analisar o codigo, acabou faltando os Apostrofos da consulta…
E outra, cara se vc for testar esse comando, testa primeiro no banco de dados pra ter certeza… (para o autor do post)
String query = "SELECT DISTINCT produto FROM pedido WHERE produto LIKE '%?%' ORDER BY produto"; lta
Se nao certo tenta concatenar os apostrofo com sua string de consulta, mas isso ai… a logica e essa…
charleston10
pmlm
Porque insistes no erro? Colocar o ponto de interrogação entre os simbolos de percentagem NÃO funciona.
Como foi mostrado atrás, a percentagem tem de ficar na String. O ponto de interrogação fica sozinho na query. E não são precisas de plicas ou apóstrofos ou como lhe queiras chamar.