Mantenimiento de una tabla en Oracle con Java y JSP – 11/15 – Hacer una consulta simple.

Capa BD
01. Crear una BD en Oracle.
02. Crear una Tabla con clave primaria.
03. Crear un secuenciador.
04. Implementar sentencias para mantenimiento de la tabla.
05. Crear un package en la BD.
06. Crear un SP con un cursor como parametro de salida.
07. Crear un SP para devolver nombres similares de un campo.

Applicacion Web
08. Crear Un proyecto Web en Java.

Capa modelo
09. Crear Una clase Entidad (una clase simple).
10. Obtener una Conexión hacia la BD.
11. Crear un Statement simple.
12. Crear un PreparedStatement con parametros.
13. Crear un CallableStatement con un cursor como parametro de salida.

Capa Controlador
14. Crear un Servlet Controlador.

Capa Vista
15. Crear una pagina JSP con un formulario.

Anexos
01. Cadena de conexión.
02. Interface connection.
03. Clase OracleDataSource.
04. SQLException.
05. try – catch.
06. RequestDispatcher.

Hacer una consulta simple

Preparación:


Para este caso consideraremos lo sgte :
Se estableció una conexion con la BD.
La Base de Datos llamada Quadro contiene una tabla Linea con los sgtes campos :

Campo Tipo
idLinea number
descripcion varchar2
estado number

Para este ejemplo usaremos el usuario SYSTEM con contraseña 12345.

Como se hace


En la clase JdbcCheckup se modificara el codigo para hacer la consulta.

package pruebas;

import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
//Importaremos tambien el paquete del driver de Oracle.
import oracle.jdbc.pool.OracleDataSource;

public class JdbcCheckup {

    public static void main(String args[])
            throws SQLException, IOException {

        // Crea un OracleDataSource y coloca el URL
        OracleDataSource ods = new OracleDataSource();
        ods.setUser("SYSTEM");
        ods.setPassword("12345");
        ods.setURL("jdbc:oracle:thin:@//dataserver:1521/Quadro");//OK
        System.out.print("Conectando a la database...");
        System.out.println("Conectando...");
        Connection conn = ods.getConnection();
        System.out.println("conectado.");
        // Crea un statement
        Statement stmt = conn.createStatement();
        // Hacer una consulta a una tabla
        ResultSet rset = stmt.executeQuery("select * from Linea");
        while (rset.next()) {
            System.out.print(rset.getInt(1) + "|");
            System.out.print(rset.getString(2) + "|");
            System.out.println(rset.getInt(3));
        }

        // cerrar el resultSet
        rset.close();
        // cerrar el statement
        stmt.close();
        // cerrar la connection
        conn.close();
    }
}

Tambien se puede haber codificado este proceso haciendo uso de try y catch para capturar las excepciones en vez de pasarlas a otro objeto u metodo que se use con posterioridad.

package pruebas;

import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
//Importaremos tambien el paquete del driver de Oracle.
import oracle.jdbc.pool.OracleDataSource;

public class JdbcCheckup {

    public static void main(String args[])   {

        Connection conn;
        ResultSet rset;
        try {
            //agregar despues de crear el objeto OracleDatasource
            System.out.println("Conectando a la database...");
            System.out.println("Conectando...");

            //obtenemos la conexion desde el Objeto OracleDataSource.
            Connection conn = ods.getConnection();
            System.out.println("Conectado.");
            // Crea un statement
            Statement stmt = conn.createStatement();
            // Hacer una consulta a una tabla
           ResultSet rset = stmt.executeQuery("select * from Linea");
           while (rset.next()) {
                System.out.print(rset.getInt(1) + "|");
                System.out.print(rset.getString(2) + "|");
                System.out.println(rset.getInt(3));
           }
            // cerrar el resultSet
            rset.close();
            // cerrar el statement
            stmt.close();
            // Cerrar la conexión
            conn.close();

         //Manejo de errores standard
         } catch(SQLException se) {
         //Manejo de errores de JDBC
             se.printStackTrace();
         } catch (ClassNotFoundException error) {
            System.err.println("No se pudo cargar el controlador JDBC." + error);
            System.exit(1);
        } finally {
            //block finally usado para cerrar recursos
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException se) {
                se.printStackTrace();
            }//fin finally try
        }//fin try
    }
}

Como funciona :


Al igual que con la conexion antes de ejecutar debemos verificar que los servicios de Oracle estan iniciados, para este ejemplo es requerido el servicio OracleServiceQuadro.
Importamos las interfaces ResultSet y Statement del paquete java.sql.

En la primera forma, una vez que tenemos la conexion establecida, creamos una sentencia con el metodo createStatement() de la clase OracleDataSource y la asignamos a un objeto stmt de tipo Statement.
Ahora vamos a ingresar una sentencia SQL que nos devolvera toda la tabla Linea: “select * from Linea”, esta sentencia la ingresamos al objeto stmt con el metodo executeQuery() y este devolvera un set de resultados que asignaremos al objeto rset de tipo ResultSet.

Luego usamos un bucle while para iterar sobre el rset. En cada iteracion se hace una llamada al metodo next() de ResultSet que devuelve true si todavia quedan registros por recorrer y avanza el cursor del resultado una posicion, luego los resultados son mostrados haciendo una conversion de cada dato con tipo JDBC al tipo de dato que maneja Java. Esto lo hace con los metodos getInt(indice), getString(indice) u otro segun el tipo de dato que se corresponda con cada campo del ResultSet. El indice de cada metodo es el nro que corresponde a la columna en la consulta conforma se muestra comenzando por 1.

En la segunda forma la variacion esta en el lugar en donde se declaran los objetos de tipo Statement y ResultSet, se usa los bloques try – catch y no se lanza SQLEXception.
Los objetos stmt y rset de tipo Statement y ResultSet, se crean antes del bloque try, para aplicar la misma forma de cierre que con el objeto conn.
Luego el codigo de la consulta es practicamente el mismo, solo hay que quitar las declaraciones de los objeto stmt y rset (quitar Statement y ResultSet respectivamente).
Una vez mostrados los datos se cierra el objeto ResultSet, luego el objeto Statement y por ultimo el objeto Connection.
Por último los bloques catch y finally se mantienen igual. En el bloque finally siempre se hace la limpieza de recursos con el metodo close() de Connection, si ocurre una excepcion , esto hara que tambien se cierren el objeto ResultSet set y Statement stmt.

Hay mas


Este Resultset simple permite hace el recorrido del set de resultados solo hacia adelante y no permite hacer actualizaciones sino es lanzada una SQLException.

Ver tambien

Java Data Access—JDBC, JNDI, and JAXP, Todd M. Thomas, Chapter 3: Setting Up Your First JDBC Query.

Java Data Access—JDBC, JNDI, and JAXP, Todd M. Thomas, Chapter 7: Understanding JDBC Data Types.

Oracle Database 11g PL/SQL Programming, Michael McLaughlin, Appendix D : Oracle Database Java Primer.

Anuncios

Un comentario en “Mantenimiento de una tabla en Oracle con Java y JSP – 11/15 – Hacer una consulta simple.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s