JSP e SQL

Barril

Power Member
Boas pessoal, tou aqui um pequeno problema a tentar validar um login em jsp/sql.

Código:
public String fetchLogin(String user, String pass){
        Connection conn=null;
        String sucesso="";
        String url="jdbc:mysql://localhost/Bones";
        String xt="";
        String res="";
        java.sql.Statement st;
        java.sql.ResultSet rs;
        
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn=DriverManager.getConnection(url,"root","123");
        //    int k=0;
        //    registos=0;
            st=conn.createStatement();

            xt="SELECT nivel FROM info WHERE login= 'user' and password= 'password'";            //criar comando

            rs=st.executeQuery(xt);                  //execcutar comando
            while(rs.next()){                    //preencher os arrays/vectores
            //    nivel[k]=rs.getString("nivel");    
                sucesso=rs.getString("nivel");
                //k++;
                //registos++;
            }

            rs.close();

        } catch (ClassNotFoundException e){
            return "Classe não encontrada!";
        } catch (SQLException e){
            return e.toString();
        } catch (InstantiationException e){
            return "Classe não Instanciada!";
        } catch (IllegalAccessException e){
            return "Acesso Ilegal";
        }
        catch (Exception e){
            System.out.println("ERRO");
        } finally{
            if(conn !=null){
                try{
                    conn.close();
                    //sucesso=nivel[0];
                } catch (Exception e){

                }
            }
        }
    //    res=sucesso;
        return sucesso;
}

A minha ideia é retornar o valor do nivel para uma ficheiro de verificação de login, e nesse ficheiro, consoante o nivel do user fazer um forward para a pagina devida (ou entao dar erro caso o retorno seja string fazia sendo este o resultdo quando nao existe na BD uma entrada com o username e password digitados).

Penso que o proprio comando SQL se encarrega de validar a existencia do user ou não?

Veem algum problema com o raciocinio?

Cumpz
 
a melhor forma para fazeres debug de sql embebido é sacares a string que estas a perguntar (query) com um print por ex, e fazeres a mesma query no client do sql em em questao. É assim que geralmente eu faco é facil rapido e dá milhoes. com queries complexas ( nao é o caso) podes estar a espera de receber uma coisa e recebes outra, e depois BOMMM... assim estás no cliente do sql fazes o query recebes a tabela resultante e ves o que estás a pensar mal.

bom trabalho.
 
Boas geek,

quanto ao raciocinio eu faria exactamente assim como tas a pensar.
experimenta fazer assim:

Código:
(...)

            xt="SELECT nivel FROM info WHERE login= 'user' and password= 'password'";            //criar comando

            rs=st.executeQuery(xt);                  //execcutar comando
            
            if(!rs.next()){ //a query veio bazia, login invalido
               //Login Invalido, vai com os porcos
            }else{
              
                int nivel = rs.getInt(1);

            }


            rs.close();

(...)
 
Última edição:
Back
Topo