mas é para imprimir cheia msm, pois sua variavel bancosql nao é nula.
t+
Hebert_Coelho
Vc está comparando com o SQL (bancosql) e não com o resultado da sua consulta. ^^
A
andrests.sp
Entao, mas no IF diz que caso seje [b]null/b ele deveria imprimir vazia…
ruivo
Vamos lá, você está com um sério problema de conceito.
No seu código, abaixo, vc tem
String bancosql = "select numero, nome FROM dados WHERE nome LIKE '%"+str+"%' ";
E em nenhum lugar do código vc anula essa varíavel. É como vc colocasse uma informação numa caixinha e NUNCA mais mexesse nela, seja pra encher, seja pra esvaziar.
Aí, lá pra frente, vc faz
Oras, a caixinha bancosql nunca foi esvaziada, portanto, imprimirá sempre ‘cheia’
A
andrests.sp
ruivo:
andrests.sp:
Entao, mas no IF diz que caso seje [b]null/b ele deveria imprimir vazia…
Vamos lá, você está com um sério problema de conceito.
No seu código, abaixo, vc tem
String bancosql = "select numero, nome FROM dados WHERE nome LIKE '%"+str+"%' ";
E em nenhum lugar do código vc anula essa varíavel. É como vc colocasse uma informação numa caixinha e NUNCA mais mexesse nela, seja pra encher, seja pra esvaziar.
Aí, lá pra frente, vc faz
Oras, a caixinha bancosql nunca foi esvaziada, portanto, imprimirá sempre ‘cheia’
Entao ruivo,
Mas eu nao preciso esvaziar ela; a consulta me retorna uma lista de nomes(caso ache), ela estara “cheia”, se ele nao achar , ela estara “vazia”
porque eu deveria esvaziar?
ruivo
Por isso que eu disse que você está com um problema de conceito. Quando você executa a query, o resultado dela não fica armazenado em bancosql. Essa variável é só lida, nunca escrita. Uma vez que ninguém escreve nela, ela sempre ficará ‘cheia’.
O que você deveria testar é o ResultSet, para verificar quantos registros foram retornados. Aí sim, se você fizesse um teste, poderia dar cheia ou vazia. Entretanto, a aquela variável bancosql nunca é alterada. Logo, nunca será vazia.
Só uma sugestão. Eu sugiro fortemente que você deva estudar o básico do básico de algoritmos. Esse tipo de erro denuncia essa deficiência.
A
andrests.sp
ruivo:
andrests.sp:
Entao ruivo,
Mas eu nao preciso esvaziar ela; a consulta me retorna uma lista de nomes(caso ache), ela estara “cheia”, se ele nao achar , ela estara “vazia”
porque eu deveria esvaziar?
Por isso que eu disse que você está com um problema de conceito. Quando você executa a query, o resultado dela não fica armazenado em bancosql. Essa variável é só lida, nunca escrita. Uma vez que ninguém escreve nela, ela sempre ficará ‘cheia’.
O que você deveria testar é o ResultSet, para verificar quantos registros foram retornados. Aí sim, se você fizesse um teste, poderia dar cheia ou vazia. Entretanto, a aquela variável bancosql nunca é alterada. Logo, nunca será vazia.
Só uma sugestão. Eu sugiro fortemente que você deva estudar o básico do básico de algoritmos. Esse tipo de erro denuncia essa deficiência.
Esta sua logica de utilizar o ResultSet eu já tinha utilizado, e acontecei a mesma coisa, por isso, eu estava testando o select.
Rodrigo_Sasaki
o que ta faltando é saber que NULO e VAZIO são coisas diferentes…
exemplo:
Você executa essa query e ela não traz nenhum registro pra você. Então o ResultSet está vazio, mas o objeto existe mesmo assim, ou seja,
o objeto não é nulo, porém está vazio.
Como você só testa para nulo e não para vazio, sempre vai cair no seu else, porque o objeto está lá.