JSP e SQL - Problema com condição IF

6 respostas
P

Estou tendo o seguinte problema:
Estou querendo fazer uma tela de cadastro de usuarios em JSP onde o usuario é testado com um Select para se saber se ele já existe na tabela, se não existir então o cadastro é liberado. O problema que estou encontrando é que quando o select retorna algum valor então o if funciona. Mais se o select não retorna nada não entra nem no While. O que devo fazer? Já tentei colocar o IF fora do While só que dá erro. Qual a estrutura do rs? Não achei em nenhum lugar uma explicação de como ele é composto.

try
        {
            //Carrega o driver Mysql Jdbc
            Class.forName(driver);
            
            //Estabelece a conexão
            Connection conn = DriverManager.getConnection (url, usuario, senha);
            
            //Cria objeto de consulta com bando de dados.
            Statement stmt = conn.createStatement();
            
            //Realiza uma consulta e armazena o resultado em um objeto ResultSet
            ResultSet rs;
            String sql = "Select userid from login where userid = 'Anderson'";
            rs = stmt.executeQuery(sql);
            %>
   
    <TABLE BORDER=1>
  		<TR>
          	<TD>Login</TD>
            
        </TR>

        <%//Executa um while para navegar nos registros de retorno
            while(rs.next())
                {
                //Armazena o registro em variaveis temporarias
                String Login = rs.getString("userid");
					if(Login != "")
					{%>Tem dados.<%} 
        %>

6 Respostas

pmlm

SQL num JSP não é boa ideia.
De qualquer forma, o que pretendes é isto:

if (rs.next()) { String Login = rs.getString("userid"); //login existe } else { //login não existe }

felipedamiani

Olá, String você deve comparar assim:

if(!login.equals("")) {}

Até,

P

Porque não seria uma boa ideia usar SQL no JSP?

Obrigado pela ajuda.

celso.martins

Por isso

P

Desculpe a minha falta de entendimento. Mais não entendi o problema. Até porque ao meu ver essa é uma solução tão boa quanto PHP, não melhor que C mais dá pro gasto. Eu não estou usando Struct nem nada do tipo. Teria que usalo? Esse é o ponto?

celso.martins

Cara, o ponto é arquitetura.

Se respeitar o padrão MVC (a explicação está no link que te passei) você estará diminuindo o acoplamento entre as suas camadas. Por que reduzir o acoplamento entre as suas camadas?

Bem, o primeiro motivo é a facilidade de manutenção. Se a sua lógica de acesso ao banco mudar, em quantas JSPs você precisará mexer? Se o nome da sua tabela mudar, quantas alterações serão necessárias?

Segundo motivo: o designer (geralmente quem é responsável pelo floreio das páginas), não tem a obrigação de conhecer Java. Apenas html e programação em tags (por isso JSTL).

Terceiro motivo: Fica muito mais legível, o background estar em classes separadas, ao invés de estar espalhado no meio de um monte de tags.

.

.

.

.

n motivo: por isso que acho o PHP e o ASP lixos.

Criado 13 de maio de 2009
Ultima resposta 13 de mai. de 2009
Respostas 6
Participantes 4