Null no next

Pessoal bom dia ao debugar o codigo no netbens ele da erro no while(rs.next()) fala que esta null poderiam me ajudar ?

String sql=“Select * from tb_usuario where usu_nivel = ?”;
String acesso;
try {
rs= pst.executeQuery(sql);

        while(rs.next()){
            
         acesso = (rs.getString("usu_nivel"));
         if(acesso.equals("administrador")){
             
             mostrar(0);
   
    
    limparCampos();
     LogAcessos log = new LogAcessos();
     
     
    log.setAcao("Cadastro de Fornecedor");
   
        Fornecedor1 forne2 = montaFornecedor();
        String resp= new FornecedorDAO().cadastrarFornecedor(forne2);
   JOptionPane.showMessageDialog(this, resp);
         
         
         
         }
         else{
         
         JOptionPane.showMessageDialog(null, "Você não tem permissão para cadastro");
         }
         
        
        }
       
        
        
        
        
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro ao buscar nivel de acesso"+ex);
    }

Boa tarde,

Creio que o seu problema está na linha abaixo:

Você tem que informar o usu_nivel com algo do tipo

ou, pelo menos tirar esta condição do usu_nivel da clausula where ( o que pra mim faz mais sentido visto que é isto que o seu select busca no banco de dados. Além disso, talvez seja interessante incluir o código do usuário a ser buscado para que a busca não ocorra na tabela inteira.

Ficaria assim Rafael ?

String sql=“Select * from tb_usuario where usu_nivel = administrador”;

Isso deixaria este valor de administrador fixo no seu select e todos os usuários seriam considerados administradores do seu sistema.

Mas, como depois você faz verificações dos níveis de acesso com if, entendo que nem todos os usuários serão administradores.

Por isso, faz mais sentido usar algo do tipo

você pode substituir o codigoDoUsuario pelo codigo dele para poder encontrar o nível de acesso que ele possui no sistema caso exista algum tipo de codigo na tabela ( tb_usuario ).

etão eu mudaria o usu_nivel do meu sistema de vez varchar administrador ou comum para.
usu_nivel integer 1 ou 0 ?

Vamos lá:

Pelo que eu entendi do seu código, você pega o nível de acesso do usuário chamado de usu_nivel e valida para ver se eles tem as devidas permissões de administrador para efetuar algo. Ocorre que se você define na clausula where dele o nivel de acesso como administrador e, no seu select você busca pelo mesmo usu_nivel vai ocorrei que todos os usuários serão administradores, logo, não seria necessário efetuar esta busca e nem mesmo a validação dos dados.

Para que o processo de validação do nível de acesso funcione corretamente, você teria que buscar pelo código do usuário ( exemplo Felipe tem o código 1, João tem o código 2, Maria tem o código 3, Flávio tem o código 4 e assim sucessivamente conforme novos usuários são cadastrados com seus respectivos direitos de acesso ) Daí, no seu select você faz a busca pelo nível de acesso conforme o código do usuário:

String sql = "select * from tb_usuarios where usu_codigo = ?"; ps.setInt(codigoDoUsuario);

Depois, você pega o usu_nivel e trata no seu if para validar se for administrador ou outra opção.