Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] entra al while doble vez

Estas en el tema de entra al while doble vez en el foro de Java en Foros del Web. alguien podria ayudarme tengo una parte de codigo que pues entraba bien y registraba una parte de lo que queria pero al modificarle el nombre ...
  #1 (permalink)  
Antiguo 09/09/2015, 09:18
 
Fecha de Ingreso: febrero-2015
Ubicación: tepoztlan
Mensajes: 72
Antigüedad: 4 años, 8 meses
Puntos: 0
entra al while doble vez

alguien podria ayudarme tengo una parte de codigo que pues entraba bien y registraba una parte de lo que queria pero al modificarle el nombre de algunas variables para ver si registraba todo quedo mal y ahora no me registra nada y entra dos veces a ejecutar el while.

Código Java:
Ver original
  1. int b = 0;//variable booleana
  2.             String us = null; //para tomar el usuario de la base de datos
  3.             String pa = null; // para tomar el pass de la base de datos
  4.            
  5.  
  6.             String usuario = request.getParameter("usuario");
  7.             String passs = request.getParameter("pass");
  8.            
  9.  
  10. //la consulta SQL
  11.             tabla = Sentencias.executeQuery("select usuario,pass from user where usuario='" + usuario + "' ");
  12.             try {
  13.  
  14.                 while (tabla.next())//desplegamos los resultados
  15.                 {
  16.                     us = tabla.getString("usuario");
  17.                     pa = tabla.getString("pass");
  18.                    
  19.                     if (us.equals(usuario) && pa.equals(passs)) {
  20.                         b = 1;//si se cumple es 1
  21.                        
  22.                     } else {
  23.                         b = 0; //sino es 0
  24.                     }
  25.  
  26.                 }
  27.  
  28.  
  29.  
  30.  
  31.  
  32.                 //luego comparamos si es uno es usuario existente y bien validado sino error
  33.                 if (b == 1) {
  34.                     String ja = new String(usuario);
  35.                      HttpSession op = request.getSession();
  36.                     op.putValue("varUsuario", ja);
  37.                     out.println("<script>alert('Usuario Identificado Correctamente')</script>");
  38.                     out.println("<meta http-equiv='refresh' content='0;url=index1.jsp'");
  39.                     Sentencias.executeUpdate("insert into usuaccion (usuario_ins, hora) values (usuario, NOW())");
  40.                 } else {
  41.  
  42.                     out.println("<script>alert('Datos Erroneos  ')</script>");
  43.                     out.println("<meta http-equiv='refresh' content='0;url=index.jsp'");
  44.                 }
  45.                
  46.                // out.println("<script>alert(insert into usuaccion (usuario_ins,hora) values ("+usuario+", NOW()))</script>");
  47.  
  48.  
  49.             } catch (Exception e) {
  50.                 e.printStackTrace();
  51.             }

entra al if donde se cumple si el usuario es valido y se regresa al while y ya de ahi sale, pero si entra al sistema, pero no ejecuta el insert
__________________
"Las piedras me las quito caminando y las pedradas tambien"
  #2 (permalink)  
Antiguo 09/09/2015, 10:22
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 5 años, 3 meses
Puntos: 182
Respuesta: entra al while doble vez

Buenas,

La unica razon por la que puede entrar en el while dos veces es porque tengas dos usuarios que se llamen igual.

Para asegurarte, mejor coloca un break tras verificar el usuario:
Código Java:
Ver original
  1. b = 1;//si se cumple es 1
  2. break;


Por otro lado, comentar que Java dispone de un tipo nativo para guardar valores booleanos.
Ej:
Código Java:
Ver original
  1. boolean b = false;


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 09/09/2015, 10:41
 
Fecha de Ingreso: febrero-2015
Ubicación: tepoztlan
Mensajes: 72
Antigüedad: 4 años, 8 meses
Puntos: 0
Respuesta: entra al while doble vez

Muchas gracias si funciono para que no entre dos veces al while
pero aun sigue sin registrar los datos que le digo mas abajo
__________________
"Las piedras me las quito caminando y las pedradas tambien"
  #4 (permalink)  
Antiguo 09/09/2015, 11:23
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 5 años, 3 meses
Puntos: 182
Respuesta: entra al while doble vez

Buenas,

Te tiene que estar dando una excepcion ya que no tiene sentido lo que haces

Cita:
Sentencias.executeUpdate("insert into usuaccion (usuario_ins, hora) values (usuario, NOW())");
Le estas indicando que inserte 'usuario'. Que es 'usuario'? Tienes que pasarle la variable. De una forma rapida podrias hacer:

Código Java:
Ver original
  1. Sentencias.executeUpdate("insert into usuaccion (usuario_ins, hora) values ('" + us + "', NOW())");

Aunque te recomiendo que revises los PreparedStatements:
http://docs.oracle.com/javase/tutori.../prepared.html

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 09/09/2015, 11:39
 
Fecha de Ingreso: febrero-2015
Ubicación: tepoztlan
Mensajes: 72
Antigüedad: 4 años, 8 meses
Puntos: 0
Respuesta: entra al while doble vez

Muchas gracias si funciono, tenia ya varios dias intentandole y nada mas no me daba resultado
__________________
"Las piedras me las quito caminando y las pedradas tambien"

Etiquetas: doble, entra, jsp, sql, string, vez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:05.