Tengo el sgte codigo que utilizo para el login pero me arroja un error cuando el usuario no existe y se va por el nullpointerexcepction aunque no causa que el programa se detenga desearia saber como puedo controlar esta excepcion de alguna mejor manera, aqui dejo el codigo.
Código:
Saludos. public ResultSet cargaAcceso(String user, String pass) { try { cn = conectaMYSQL.getIntance().getConnection(); ps = cn.prepareStatement("SELECT * FROM usuario WHERE (usu_usuario = '" + user + "' AND usu_contrasena = '" + pass + "')"); rs = ps.executeQuery(); } catch (Exception ex) { JOptionPane.showMessageDialog(null, ex.getMessage()); Logger.getLogger(AccesoDAO.class.getName()).log(Level.SEVERE, null, ex); } return rs; } UsuarioTO a ; public UsuarioTO logear(String user, String pass) { sql = "SELECT * FROM usuario WHERE (usu_usuario = '" + user + "' AND usu_contrasena = '" + pass + "')"; Object[] filaObt = operacionDAO.getFila(sql); try { if (filaObt != null) { a = new UsuarioTO(); a.setId(Integer.parseInt(filaObt[0].toString())); a.setCodigo(filaObt[1].toString()); a.setNombre(filaObt[2].toString()); a.setUsuario(filaObt[3].toString()); a.setContrasena(filaObt[4].toString()); a.setIp(filaObt[5].toString()); a.setPerfil(filaObt[6].toString()); System.out.println("Usuario Correcto"); } else { JOptionPane.showMessageDialog(null, "No existe el Usuario Asociado"); AccesoGUI.txtUsuario.setText(""); AccesoGUI.txtContraseña.setText(""); AccesoGUI.txtContraseña.setEnabled(false); AccesoGUI.txtUsuario.requestFocus(); } } catch (NullPointerException ex) { JOptionPane.showMessageDialog(null,ex.getMessage()); Logger.getLogger(AccesoDAO.class.getName()).log(Level.SEVERE, null, ex); } return a; } public String perfil(String user, String pass) { sql = "SELECT usu_perfil FROM usuario WHERE (usu_usuario = '" + user + "' AND usu_contrasena = '" + pass + "')"; rs = cargaAcceso(user ,pass); try { while (rs.next()) { String add = rs.getString(7); resul = add; //JOptionPane.showMessageDialog(null,"Usted es : " +resul); } } catch (SQLException | NullPointerException ex) { JOptionPane.showMessageDialog(null,ex.getMessage()); Logger.getLogger(AccesoDAO.class.getName()).log(Level.SEVERE, null, ex); } return resul; } String resul,perfi; public boolean acceder(String usuario, String clave, JTextField t1, JTextField t2) { flag = false; usuario = t1.getText(); clave = t2.getText(); usuarioTO = logear(usuario, clave); try { perfi = perfil(usuario, clave); switch (perfi) { case "Administrador": if (usuarioTO.getIp().equals(ipdao.getIP())) { JOptionPane.showMessageDialog(null, "ad", "Cuadro de Advertencia", JOptionPane.QUESTION_MESSAGE); JOptionPane.showMessageDialog(null, "Bienvenido al Sistema", "Cuadro de Advertencia", JOptionPane.QUESTION_MESSAGE); flag = true; gui.setVisible(true); AccesoGUI.estado = 1; MenuAdministradorGUI.lblMensaje.setText(usuario); } else { JOptionPane.showMessageDialog(null, "Datos Erroneos Adm", "Cuadro de Advertencia", JOptionPane.ERROR_MESSAGE); AccesoGUI.lblMensaje.setText("Su Dirección IP no esta Autorizada para el Acceso"); t2.setText(""); t1.setText(""); t1.requestFocus(); } break; case "Usuario": if (usuarioTO.getIp().equals(ipdao.getIP())) { JOptionPane.showMessageDialog(null, "user", "Cuadro de Advertencia", JOptionPane.QUESTION_MESSAGE); JOptionPane.showMessageDialog(null, "Bienvenido al Sistema", "Cuadro de Advertencia", JOptionPane.QUESTION_MESSAGE); flag = true; guiu.setVisible(true); AccesoGUI.estado = 2; MenuUsuarioGUI.lblMensaje.setText(usuario); } else { JOptionPane.showMessageDialog(null, "Datos Erroneos User", "Cuadro de Advertencia", JOptionPane.ERROR_MESSAGE); AccesoGUI.lblMensaje.setText("Su Dirección IP no esta Autorizada para el Acceso"); t2.setText(""); t1.setText(""); t1.requestFocus(); } break; } } catch (NullPointerException ex) { JOptionPane.showMessageDialog(null,"Error"+ex.getMessage()); Logger.getLogger(AccesoDAO.class.getName()).log(Level.SEVERE, null, ex); flag = false; } return flag; }