Dúvida sobre consulta ao banco!

5 respostas
andre_bento

Olá galera…
Estou precisando de uma ajuda aqui com uma consulta ao banco de dados que estou precisando fazer em uma nova aplicação que estou desenvolvendo…
É o seguinte… preciso fazer uma consulta em uma tabela que tem números como chave promária para identificação delas em uma parte do sistema… mas o que eu estou precisando é pegar todos os registros que, por exemplo, tenham um código == 2, ou começem com o número 2 … Mais ou menos assim:

sql = connection.prepareStatement("select from materiais where codigo =? OR codigo like '_%')

Mas o que acontece é o seguinte… essa parte do like só aceita se eu colocar diretamente como o código vai começar… então eu teria que ter no caso 9 métodos e cada um de maneira diferente… por exemplo

sql = connection.prepareStatement("select from materiais where codigo =? OR codigo like '1%')
sql = connection.prepareStatement("select from materiais where codigo =? OR codigo like '2%')

… e por ae vai até o 9!
Então gostaria de saber como posso fazer essa consulta passando um curinga da mesma maneira que estou passando para o where codigo = ?

Não sei se fui muito claro! Agradeço a ajuda de todos ae!!
Abraços

5 Respostas

jcmird

Amigo, nao entendi porque a necessidade ter 9 selects uma para cada numero. Vc passará parametros para a query?
uma já é necessaria pelo o que entendi

francislon

Amigo, vc pode concatenar Strings como mostrado abaixo:

sql = connection.prepareStatement("select from materiais where codigo =? OR codigo like ' " + curinga+ "%' ");
wbdsjunior

talvez você possa criar uma String com a consulta:

String consulta = "select * from materiais where codigo =? OR codigo like '#%'";

e dar um replace:

consulta = consulta.replaceFirst("#", "1"); consulta = consulta.replaceFirst("#", "2"); ...
e usar a string no PreparedStatement…

abraço.

M

Será que esse laço não te ajuda:

for (int i = 0; i <= 10; i++) {
     sql = connection.prepareStatement("select from materiais where codigo = ? OR codigo like ?");
    sql.setInt(1, i);
    sql.setString(2, i + "%");
}
andre_bento

Olá amigos!!!
Desculpe a demora para olhar o tópico… .mas é que estive viajando e agora quando voltei estava tendo problemas com minha internet!
Tentei fazer o que o amigo francislon falou mas não está dando certo pessoal!
Eu tentei também a seguinte maneira:

sql = c.prepareStatement("select *  from materiais where codigo like '?%'");

Só que não está indo… .está dando erro… dizendo que o número de índice das colunas é 0, e que eu fiz referência ao índice 1 …
Só que não estou conseguindo entender esse erro…
e quando eu passo daquela maneira sql = c.prepareStatement ("select * from materiais where codigo = ? OR codigo like'?%'"); Ele também não vai!
ME ajuda ae galera… to precisando terminar esse sistema aqui!!!
Grato a todos pela ajuda!
PS: Vou tentar o lance da String agora amigo… O que esse método ReplaceFirst faz exatamente???
Abraços

Criado 20 de fevereiro de 2009
Ultima resposta 27 de fev. de 2009
Respostas 5
Participantes 5