Java - Aplicación de java

 
Vista:

Aplicación de java

Publicado por Marlon (2 intervenciones) el 08/07/2022 08:37:01
Buenas Tardes

Estoy creando un programa para la ingreso de pacientes de un hospital, para eso tengo una base de datos de SQL server que esta en un servidor, el inconveniente que tengo es que al momento de ejecutarlo en NetBeans me funciona bien los tres perfiles que tengo que son: Administración, Recepción y Enfermería, pero cuando genero en ejecutable de java del programa que estoy haciendo solo me muestra el menú de administración y enfermería pero no me muestra el menú de recepción, para ingresar a cada menú se debe de colocar un usuario y clave en un login que cree.

Este es el código del login para la verificación de cada perfil que tengo en SQL, me pueden indicar que esta mal o si le falta algo:

String user = txtuser.getText();
String pass = pswclave.getText();

try{
if (user.equals("")&& pass.equals("")){
JOptionPane.showMessageDialog(null,"INGRESAR UN USUARIO Y CONTASEÑA","ADVERTENCIA",JOptionPane.WARNING_MESSAGE);
}
String url = "SELECT usuario, clave, perfil FROM Usuarios WHERE activo = 1 AND usuario='"+user+"'";
Connection con = Conexion.getConexion();
PreparedStatement ps = con.prepareStatement(url);
ResultSet rs = ps.executeQuery();
if(rs.next()){
//si existe el usuario
String u=rs.getString("usuario");
String p=rs.getString("clave");
String pe=rs.getString("perfil");

if(pass.equals(p)){

if(pe.equals("Administrador")){
Menu_Administrador admin = new Menu_Administrador();
admin.setVisible(true);
this.dispose();
}
if(pe.equals("Recepcion")){
Menu menu = new Menu();
menu.setVisible(true);
this.dispose();
}
if(pe.equals("Enfermeria")){
Menu_Enfermeria enf = new Menu_Enfermeria();
enf.setVisible(true);
this.dispose();
}
}else{
JOptionPane.showMessageDialog(null,"Contraseña Incorrecta");
}

}else{
JOptionPane.showMessageDialog(null,"Usuario no Existe en la BD");
}

}catch(SQLException ex){
JOptionPane.showMessageDialog(null,ex.toString());
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Aplicación de java

Publicado por Billy Joel (876 intervenciones) el 09/07/2022 06:26:20
Estuve analizando la consulta.
Te tengo unos pequeños cambios
- Cuando compares String's debes utilizar los métodos que tienen ya que esta es un objeto de una clase y no una variable primitiva. Ok mira tienes esto:
1
if (user.equals("") && pass.equals("")) {
Modificalo por:
1
if (!user.isEmpty() && !pass.isEmpty()) {
Ya que estás validando si tus variables user y pass están vacías. Entonces esto te va a servir

- Como estás usando PreparedStatement entonces usemos todo el potencial que nos brinda. Un día te puedo explicar porque PreparedStatement es mejor que Statement. Solo te digo que bajé un proceso de 5 minutos a 1 segundo por utilizar PreparedStatement.
Tienes esto:
1
String url = "SELECT usuario, clave, perfil FROM Usuarios WHERE activo = 1 AND usuario='"+user+"'";
Modificalo por esto:
1
String url = "SELECT usuario, clave, perfil FROM Usuarios WHERE activo = 1 AND usuario= ?";
Entonces despues de crear el objeto del PreparedStatement agrega lo siguiente:
1
ps.setString(1, user);
Básicamente estas usando una consulta a la base de datos pero con una variable; En los PreparedStatement las variables se agregan a tu consulta con un signo de interrogación dentro de la consulta sql. Entonces con el setString(1, user) lo que estas diciendo es que la primer variable va a ser String y será user. Con más signos de interrogación más llamados al setString, setInt, setObject, etc...

Para lo del menú de recepción debes verificar que el usuario que estes usando en efecto tenga "Recepcion" en el perfil.

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar