1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

JSP e SQL

Discussão em 'Programação' iniciada por Barril, 22 de Junho de 2008. (Respostas: 2; Visualizações: 853)

  1. Barril

    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
     
  2. Zaonpt

    Zaonpt Power Member

    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.
     
  3. barbosas

    barbosas [email protected] Member

    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: 22 de Junho de 2008

Partilhar esta Página