Eu estou testando algumas conexões as conexão deus certo me exibiram os valores do banco, o código ficou assim:
PreparedStatementsql=conn.prepareStatement("select * from tabela where usuario = ? and senha = ?");sql.setString(1,usuario);sql.setString(2,senha);rs=sql.executeQuery();while(rs.next()){nome=rs.getString("nome");cargo=rs.getString("cargo");}
Porém estou com uma dúvida, dessa forma que eu fiz essa class envia para o meu servlet contendo ou não valor no banco eu quero saber como eu faço para caso o rs esteja vazio ele envie uma informação de erro para meu servlet ao invés de um resultado vazio! Eu tentei usar lenght no rs mas não deu certo, procurei outra opções como count mas também não funcionou, a idéia é básica se conter algum resultado no rs ele entra no while e armazena os dados nas variáveis caso não contenha nada ele armazenar um valor de erro em uma outra variável. Só preciso achar as informações certas pra jogar no if else.
Alguém pode me dar um força?
Paleativos, talvez não sejam as melhores maneiras de se fazer isso.
Até!
alexandremanowar
E ae blz!
Então fiz alguns testes aqui e nenhuma opção funcionou, não deu msg de erro ma não funcionou, tipo assim se eu não colocar o while dentro da condição ele exibe os resultados, porém se eu coloco o while dentro da condição if ele mostra a JSP vazia, tentei de outras formas colocando por exemplo if(rs.next() == true) e fiz outros teste como usar por exemplo if(rs.first()) mas todos deram falha.
Será que essa forma não funfa legal? Será que estou usando algo errado?
Um exemplo completo do código ficou assim:
/* * DAOLogin.java * * Created on 8 de Outubro de 2007, 22:24 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */packageDAO;importjava.io.*;importjava.net.*;importjava.util.*;importjava.sql.*;importConexao.Conexao;/** * * @author alexandre */publicclassDAOLogin{privateStringnome;privateStringnivel;privateStringusuario;privateStringsenha;privateinterro=0;privateResultSetrs;privateConnectionconn;privateStatementsql;publicDAOLogin()throwsSQLException,IOException{conn=Conexao.connect();}publicvoidsetUsuario(StringaUsuario)throwsSQLException{usuario=aUsuario;PreparedStatementsql=conn.prepareStatement("select * from senhadeals where usuario=?");sql.setString(1,usuario);rs=sql.executeQuery();if(rs.next()){while(rs.next()){nome=rs.getString("nome");nivel=rs.getString("nivel");}}else{//faça algo}}publicStringgetNome(){returnnome;}publicStringgetNivel(){returnnivel;}publicintgetErro(){returnerro;}}
Onde estou errando como posso arrumar?
Valeu pela força
maquiavelbona
Atente a esse trecho de código e veja o meu primeiro exemplo para ver o que está discordante:
if(rs.next())
{
while(rs.next())
{
nome = rs.getString("nome");
nivel = rs.getString("nivel");
}
}
O erro é de atenção, faça um teste de mesa e veja o porque do erro.