Mantenimiento de una tabla en Oracle con Java y JSP – 10/15 – Crear una conexion con la BD.

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.

Crear una conexion con la BD

Preparación:


Para este caso consideraremos lo sgte :

Una PC que llamaremos dataserver para instalar Oracle.
Una PC que llamaremos devcliente para desarrollo.
Ambas PC’s deben estar en una misma red.
Ambas PC deben tener el SO Windows XP y los Firewalls desactivados (para hacerlo más fácil).

Una Base de Datos llamada Quadro

Como es comun en el desarrollo dataserver y devcliente pueden ser la misma maquina.

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

Se usara un Driver JDBC de Oracle, específicamente el JDBC Thin Driver 11R1 el cual es un driver 100% en Java que se ejecuta en la capa cliente usado para aplicaciones cliente, servidores de capa intermedia y applets.
Se copiara este driver desde dataserver en un directorio en devcliente. Su ubicación es : [Oracle]\[Usuario]\product\11.1.0\db_1\jdbc\lib\ojdbc6.jar;
Donde Oracle es el directorio donde se instaló Oracle 11g R1.
Usuario es un directorio creado durante la instalación Oracle y se corresponde con el nombre del usuario con el que se realizó la instalación.
En ese directorio esta tambien ojdbc5.jar que se usa para JDK 1.5 , ojdbc6. es para JDK 1.6
Crearemos un directorio javalib en c:\ y copiaremos allí el driver.
Volvemos la Proyecto Netbeans y agregamos este driver a la Libreria (como un jar).
Nota : No se debe agregar mas de un driver Oracle a la Libreria o al CLASSPATH , por ejemplo no se debe tener JDBC Thin Driver 11R1 y además JDBC OCI Driver 11R1.

Como se hace


Crearemos un paquete pruebas y dentro de él una clase llamada JdbcCheckup.

package pruebas;

// Necesitas importar el paquete java.sql package para usar JDBC
import java.sql.Connection;
//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.");
        // 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;

// Necesitas importar el paquete java.sql package para usar JDBC
import java.sql.Connecion;
//Importaremos tambien el paquete del driver de Oracle.
import oracle.jdbc.pool.OracleDataSource;

public class JdbcCheckup {

    public static void main(String args[])   {

        Connection conn;
        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.");
            // Cerrar la conexión
            conn.close();

        } 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 :


Antes de ejecutar debemos verificar que los servicios de Oracle estan iniciados, para este ejemplo es requerido el servicio OracleServiceQuadro. Ejecutar la clase y ver los resultados.

Agregamos el metodo main y le ponemos la palabra throws para que lance las exceptiones SQLException, IOException.

Primero importamos la interface Connection que representara una conexion fisica con la BD y tambien importamos la clase oracle.jdbc.pool.OracleDataSource que es provista por Oracle (cuenta con pool de conexiones).

Primero creamos un objeto OracleDataSource, ods, que permitira obtener la materializacion de la interface Connection ya que implementa todo el proceso para crearlo.

Al objeto OracleDataSourse se le asignan los valores del usuario, el password y el URL de la BD.
Con el metodo getConnection de OracleDataSourse obtenemos la conexion y la asignamos al objeto conn de tipo Connection, y si esta sentencia es completada sin problemas, en la sentencia siguiente se muestra el mensaje “conectado”.
Luego se cierra la conexion con el metodo close de Connection.

La segunda forma importa las mismas clases.
Luego declaramos el objeto conn de tipo Connection antes del bloque try. Esto es porque si se declara dentro y se produce una excepcion antes de la sentencia que lo declara, el bloque finally que siempre se ejecuta no podra usar este objeto.

Dentro del bloque try obtenemos una conexion con el metodo getConnection() de la clase OracleDataSource y lo guardamos en la variable conn.

En este ejemplo solo se usa un catch y es para el caso que no se encuentre la clase OracleDataSource, lo comun es tener otros mas para las excepciones generadas por otros objetos usados en el bloque try.

Luego se crea un bloque finally para cuando se produzca alguna excepcion y el metodo close() del objeto Connection dentro del try no se pueda ejecutar.

El finally asegurara que se haga una apropiada limpieza del objeto Connection, si el metodo getConnection() de OracleDataSource lanza una SQLException, ocasionara que no se pueda cerrar la conexion si anteriormente ya se obtuvo una, por eso esta debe ser captada por este finally.

Ver tambien


Oracle Database 11g : The Complete Reference, Kevin Loney, Chapter 43 : JDBC Programming.

Oracle JDBC Drivers release 11.1.0.6.0, README.txt en directorio <dir_instal_Oracle>\product\11.01\db_01 jdbc.

Anuncios

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