Validar ingreso con Base de Datos

ElkinG
28 de Julio del 2009
Hola a todos ...espero me puedan ayudar con mi problema..
estoy desarrollando un software al que solo se tendra acceso validando un Codigo y una Clave ingresada por el usuario...el proceso de validacion que quiero usar es el siguiente....
Obtengo el Codigo y la Clave a travez de 2 textfield : codigo.JTExtField y clave.JTextField...esos datos se guardaran en dos variables tipo String...hasta alli todo va bien..

luego ingreso a una base de datos y pido que compare esos dos valores con todos los codigo y las contraseñas que hay registradas en mi tabla "X" de la base de datos...Si algun codigo y clave de la base de datos es igual a los que ingrese en los textField..entonces el usuario tendra Acceso al software....

try{
Codigo = codigo.getText();
Clave = clave.getText();
Connection conexion = DriverManager.getConnection("jdbc:odbc:DataBaseFCP");
Statement estatuto = conexion.createStatement();
ResultSet rs = estatuto.executeQuery("select CODIGO,CLAVE from Socios where CODIGO = Codigo and CLAVE = Clave");
while(rs.next()){
CodigoBD = rs.getString("CODIGO");
ClaveBD = rs.getString("CLAVE");
jLabel3.setText(""+ClaveBD);
jLabel8.setText(""+CodigoBD);
if (Codigo.equals(CodigoBD) && Clave.equals(ClaveBD)){
PanelInicio.setVisible(true);
PanelPrincipal.setVisible(false);
}
else{
error.setVisible(true);
Codigo = "";
Clave = "";
}
}
estatuto.close();
conexion.close();

}catch(SQLException e){
System.out.println(e.getMessage());
}

cada vez que ejecuto el codigo me la base de datos me devuelve el ultimo dato de cada columna (CODIGO y CLAVE)..y cuando ingreso lo dos ultimos valores en los textfield no pasa nada aun siendo iguales...noc q puede andar mal..! por favor ayudenme..! se los Agredesco...

remizero
28 de Julio del 2009
Hola que tal!

Para empezar la consulta que haces ya de por sí te trae unicamente los valores introducidos en los JTextField, por lo que el while esta de más, deberías buscar una función que te dé el resultado de lo encontrado en la consulta, es decir, rs.algo(si tiene algún valor la busqueda).

Por lo que veo PanelInicio es la ventana a la que quieres pasar, después del login, no se que traes previo a este código, pero lo más lógico sería que hicieras una instanciación de PanelInicio.

Por otro lado, con PanelPrincipal, no deberías hacer un setVisible(false), pues solo estas quitando su parte gráfica, pero sigue estando ahí, y te está consumiendo memoria, deberías aplicarle un destroy(). creo que con ésto se resolverá tu problema.

Espero haber sido de ayuda en tu problema.