E ae pessoal blz
Eu estou testando algumas conexões as conexão deus certo me exibiram os valores do banco, o código ficou assim:
PreparedStatement sql = 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?
Valeu
Maneira 1:
if(rs.next()){
doSomething();
while(rs.next()){
doSomething();
}
}else{
throw new QueryVaziaException();
}
Maneira 2:
boolean vazio=true;
while(rs.next()){
doSomething();
vazio = false;
}
return (vazio==false)?"Foi tudo ok":throw new QueryVaziaException();
Paleativos, talvez não sejam as melhores maneiras de se fazer isso.
Até!
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.
*/
package DAO;
import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;
import Conexao.Conexao;
/**
*
* @author alexandre
*/
public class DAOLogin
{
private String nome;
private String nivel;
private String usuario;
private String senha;
private int erro = 0;
private ResultSet rs;
private Connection conn;
private Statement sql;
public DAOLogin() throws SQLException, IOException
{
conn = Conexao.connect();
}
public void setUsuario(String aUsuario) throws SQLException
{
usuario = aUsuario;
PreparedStatement sql = 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
}
}
public String getNome()
{
return nome;
}
public String getNivel()
{
return nivel;
}
public int getErro()
{
return erro;
}
}
Onde estou errando como posso arrumar?
Valeu pela força
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.
Até!