Recuperar Datos de la Tabla de una BD

Recuperar Datos de la Tabla de una BD

En la entrada anterior, se había presentado las líneas de código necesarias para el ingreso de registros a la tabla de una BD. En ésta traigo los pasos mínimos para recuperar esos registros u otros de cualquier tabla.
Como siempre, trabajo con métodos, porque es uno de las características más importantes de la POO.
A seguir el código correspondiente:
*********************************************************************************

public int login (String user, String passw) {
        try {
            conn = obtConexion();
            String query = "SELECT func_id_funcionario, func_usuario FROM funcionarios 
                    WHERE func_usuario = ' " + user + " ' AND func_contrasenha = ' " + passw +  " ' ";
            stmt = conn.createStatement();
            rset = stmt.executeQuery(query);

            if (rset.next()) {
                usuarioID = rset.getInt(1);
                username = rset.getString(2);
                return usuarioID;
            }
            else
            {
                JOptionPane.showMessageDialog (null, "Usuario o Contraseña incorrectos!", "Error",
                    JOptionPane.ERROR_MESSAGE);
                return 0;
            }
        }
        catch (SQLException exc)
        {
            JOptionPane.showMessageDialog (null, exc, "Error", JOptionPane.ERROR_MESSAGE);
            return 0;
        }
    }
********************************************************************************
Bien, éste es un sencillo método para logear que devuelve un entero que corresponde al ID del usuario.
Los objetos conn (Connection), stmt (Statement), rset (ResultSet) son objecto a nivel de clase. El conn, vimos en la primera entrada que es la instancia que almacena la conexión establecida a una BD, el stmt en cambio es el que permite enviar instrucciones o sentencias SQL a la BD, y el rset es el objecto encargado de almacenar el/los registro/s que resulte de la sentencia. El objecto stmt se crea a partir del objecto conn una vez conectado a la base de datos mediante el método createStatement() de la clase Connection, Respectivamente en el objecto rset almacena los registros que devuelva la ejecución de la sentencia sql (variable query). Ésta variable se le pasa como parámetro al método executeQuery() que es el encargado de ejecutar la sentencia, o también se puede escribir la sentencia explícitamente como argumento, es decir, executeQuey ("sentencia sql a ejecutarse"). Se debe poner atención al confeccionar la sentencia, si se añade String deben ir entre comillas simples, no así para los enteros.
Una vez ejecutada el query, se verifica que el objeto rset no esté vacío (null) mediante el if (rset.next()).  next() es un método booleano del ResultSet que devuelve true si aún hay registros por recorrer, si no, false.
Si la sentencia retorna (o debe retornar) un sólo registro (fila) entonces basta usar el if, si retorna o puede retornar más de un registro debe usarse un while de la misma forma que el if, o sea while (rset.next()), ésto es para poder recorrer todos los registros que estén contenido en rset.
El orden en que un objecto ResultSet (rset) almacena los campos/columnas de una tabla es exactamente igual al orden en que fueron colocadas en el SELECT. Es decir si se hubiera puesto usuarioID = rset.getInt(2) estaría incorrecto porque el índice 2 corresponde a la columna func_usuario. Los getters usados deben concordar en tipos con las columna de la tabla.
Si (en el ejemplo) el rset no contiene nada, entonces el usuario no existe o los datos (usuario o contraseña) son incorrectos, lo que se muestra en el cuadro de mensaje para el caso y se retorna cero para que no se inicie la sesión y se pida que vuelvan a ser escritos el usuario y la contraseña.
En caso de una conexión fallida o porque la sentencia esté mal la ejecución para al catch que despliega la excepción/error correspondiente.!

Comentarios

Entradas populares de este blog

Ejercicios para aprender AutoCAD 3D

Piezas 3D - interesantes

Cómo instalar una fuente de alimentación