ResultSet como saber se achou algo?

Por exemplo, como faço pra saber se meu ResultSet encontrou a linha procurada?

Porque eu to fazendo a parte de login de um sistema…

Quando ele encontra o usuario no banco, tudo ok, ele faz o que tem que fazer certinho…

Agora quando não encontra ou o cara deixou o campo usuário em branco, ele dah um erro… de NullPointerException

Então, como eu verifico se a consulta retornou uma linha, ou nenhuma?

tipo se encontrou faça isso senão faça aquilo…

Atualmente faço if(rs.next()){}else{} mas acho que num tah certo!

O que você faz é o que deve ser feito (if … { } else { }).
É o mais rápido, já que a informação que você precisa não é a contagem de linhas, mas só saber se achou ou não.

e isso q vc fez mesmo…

ja tentei fazer (rs != null), mas nao da pq segundo a documentacao o retorno do RS e (never null)…

Se você fez

e ainda tá dando erro de NullPointerException, é por que o problema é outro, não nessa condição aí. Alguma variável inicializada com null não recebeu nenhum outro valor e ao tentar referenciar algum método, por exemplo, explodiu-se.

Coloque tudo isso num try/catch e no catch coloque um printStacktrace.

posta um trecho do seu código para gente entender sua pergunta com mais facilidade

Olá.
Acho que o erro e em outra parte mesmo. Pois se o ResultSet nao encontrar resultado ele mostra erro no Exception. Lá vc pode personalizar uma infomaçao de nao encontrado com um JOptionPane.

espero ter ajudado,
Marck

Olá pessoal, reaproveitando a pergunta, preciso saber se o rs encontrou algo no banco.
seria algo do tipo rs.length() ou rs.size() porem ele não tem nenhum desses metodos.
como faria para saber se o rs retornou alguma linha?.

cara e simples da um

if(rs.next()){
rs.previus();
//faz o que tem que fazer
}else{
System.out.println("Nâo voltou nada");
}

N linha do next vc esta validando se existem alguem la dentro do rs. ou seja existe um prixomo? pois ele nunca volta null sempre existe algo no retorno de um rs creio que sejam as informações para o metadata mas isso foje, então ai depois de validar se existe algo volte para a 1º posição com o previus e imprima na tela caso ele entre no else e pq nao veio nada do banco.

if (rs.next()) // retornou algo else // nada retornado

[quote=Bruno Laturner]if (rs.next()) // retornou algo else // nada retornado[/quote]

desta forma ele estaria dando um next() no rs e perderia o 1º registro ele deve voltar com o previus…especificação do JDBC 2.0 resultset rolaveis

[quote=TeiTei][quote=Bruno Laturner]if (rs.next()) // retornou algo else // nada retornado[/quote]

desta forma ele estaria dando um next() no rs e perderia o 1º registro ele deve voltar com o previus…especificação do JDBC 2.0 resultset rolaveis [/quote]
É meio estranho checar se existe primeiro para depois obter.

Geralmente eu já executo trazendo os resultados:[code]List list = new ArrayList();
while (rs.next())
list.add(getResultado(rs));

// se quiser saber a qtd depois:
list.size();[/code]Se quiser mesmo ver quantos tem p/ depois executar, então só com esse tipo que você falou, e executando um beforeFirst()

Para saber o número de resultados retornados, tente rs.last(); numero = rs.getRow();
Mesmo caso de antes, precisa do beforeFirst() se quiser obter algo depois.

Pra verificar se um usuário existe, se você está usando “count” no seu select, ele vai sempre retornar alguma coisa. Se não tá usando, talvez devesse.

Na dúvida, posta seu código pra gente ajudar.

[quote=TeiTei]cara e simples da um

if(rs.next()){
rs.previus();
//faz o que tem que fazer
}else{
System.out.println("Nâo voltou nada");
}

N linha do next vc esta validando se existem alguem la dentro do rs. ou seja existe um prixomo? pois ele nunca volta null sempre existe algo no retorno de um rs creio que sejam as informações para o metadata mas isso foje, então ai depois de validar se existe algo volte para a 1º posição com o previus e imprima na tela caso ele entre no else e pq nao veio nada do banco.[/quote]

Fala pessoal, obrigado pela ajuda, era meio logico o else, mas não tinha observado isso,
enfim, se retornar algo da consulta, ele executa os get, senão, ja vai para o else.

if(rs.next()){
//faz o que tem que fazer
}else{
System.out.println("Nâo voltou nada");
}

Vlw!