13/01/08Seminario de Bases de Datos1 Oracle y Java * * Tomado del curso de Francisco Moreno.

Slides:



Advertisements
Presentaciones similares
¿Cómo hacer los ejercicios prácticos de Access?
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
CREATE VIEW nombre [ ( columna [,...n ] ) ] AS sentencia_select [ WITH CHECK OPTION ] 1.nombre Es el nombre de la vista. 2.Se debe tener permisos CREATE.
Composición de Una Tabla de Números a Partir de Una Lista de Números Separada por Comas en Transact SQL Leonel Morales Díaz Ingeniería Simple
Acceso a Bases de Datos con Java
2003 HYPACK MAX Training Seminar1 Sample Case la Entrada manual de Datos de la Línea de la costa El Metodo de MANUAL –DIG Objectos –Boya (Roja)
Delete en tablas: titulacion. Puedo eliminar cualquier fila de una tabla? Restriccion de integridad: Restrict/Cascade.
Conceptos Básicos del lenguaje de programación COBOL
MSQL OPERADORES BIT A BIT & a & b Operador de BIT AND. I a l b Operador de BIT OR. < < a >
Query Direcciones SELECT Nombre, Apellido, Ciudad FROM Direcciones;
09/02/2014Curso Bases de Datos1 Ejemplos Álgebra Relacional.
Spatial Database Bases de Datos Espaciales MOTORES COMERCIALES Oracle Spatial.
Bases de Datos Espaciales SPATIAL QUERY LANGUAGES
Programando con Hilos POSIX* Intel Software College.
Banco de Datos1 Defensa Pública y Derechos Humanos.
Entrada y salida Fundamentos de programación/Programación I
ERASMO AGUILAR SIG FARQ UNI
Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables.
Nombre:Nº de Control: María del Carmen Raygoza Hernández Judith Itzel Requejo Hernández
Procedimientos Almacenados y Disparadores
Defensa Pública y Derechos Humanos
TRANSMISIÓN DE DATOS Ángel Moreno Departamento de Automática
SQL Base de Datos LENGUAJES DE CONSULTA AR y CR no pueden ser tomados como base para implementar porque: Poseen sintaxis compleja No permiten.
PL/SQL Francisco Moreno Universidad Nacional. Funciones Si un procedimiento tiene solo un parámetro de salida, se puede remplazar por una función y esta.
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Packages –Unidad de compilación que permite la especificación.
Banco de Datos1 Mecanismos de Protección de los Derechos Fundamentales de las personas privadas de libertad.
ACCESO A BASES DE DATOS ORACLE CON PHP
Oracle y Java Continuación *
01/12/07Seminario de Bases de Datos1 Características Objeto Relacionales en Oracle 10G* * Tomado del curso de Francisco Moreno.
25/11/07Laboratorio de Bases de Datos1 PL/SQL* *Tomado del curso de Francisco Moreno.
01/12/07Seminario de Bases de Datos1 Características Objeto Relacionales en Oracle 10G* * Tomado del curso de Francisco Moreno.
Herramientas de Oracle para realizar Tuning de Sentencias SQL
11/06/201424/11/06Lab. Bases de Datos1 JSP y Bases de Datos * * Tomado del curso de Francisco Moreno.
1 Entrada/Salida en Java Jaime Ramírez, Ángel Lucas González DLSIIS. Facultad de Informática Universidad Politécnica de Madrid.
UNIVERSIDAD LATINA (UNILA) VI.- ARCHIVOS Y BASES DE DATOS
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Overloading de subprogramas procedure Put(Item: in integer;
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Subprogramas –Encabezamiento –Declaraciones –Cuerpo –Encabezamiento.
Seminario de Lenguajes A – Opción Ada Estructura general de programas –Especificación de contexto –Encabezado –Declaraciones –Cuerpo Seminario de Lenguajes.
Seminario de Lenguajes A – Opción Ada
EL LENGUAJE ESTÁNDAR SQL
ALGEBRA RELACIONAL.
Características Objeto Relacionales en Oracle
Francisco Moreno Bases de Datos II Universidad Nacional
Características Objeto Relacionales en Oracle
Bases de Datos Relacionales Preparó: Ismael Castañeda Fuentes Fuentes:Manuales Sybase Manuales SQL Server Manuales Oracle BATCHS.
BASES DE DATOS Ejercicio No. 6. Ejecutar las siguientes sentencias SELECT nombre, ueldo FROM user.tabla_profesor WHERE filtro 1 UPDATE user.tabla_profesor.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
UNITA - IBARRA BLOQUES PL-SQL SUBPROGRAMAS Paulina Guevara.
Características Objeto Relacionales en Oracle
Administración de Servidores de Bases de Datos Bases de Datos de Usuarios Caso particular Adaptive Server Enterprise.
1.Tecnología Java Instaladores necesarios Jdk->Para Desarrollo
M.I. María Luisa González Ramírez Servlets y JSP.
Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912.
Middleware Java 2 Enterprise Edition
RMI JAVA Implementación.
Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas.
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso.
Java Data Base Connectivity
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Francisco Moreno Bases de Datos II Universidad Nacional
Conferencia 9. ODBC, OLE DB y JDBC.
Características Objeto Relacionales en Oracle
MYSQL SQL: Lenguaje de consulta estructurado. Es un lenguaje de programación para trabajar con BD relacionadas, entre las cuales tenemos MYSQL, ORACLE,
Tipos de datos en MYSQL YEAR: Año. “YYYY” o “YY”
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
Características Objeto Relacionales en Oracle
JDBC: comunicación Java-Base de Datos
Transcripción de la presentación:

13/01/08Seminario de Bases de Datos1 Oracle y Java * * Tomado del curso de Francisco Moreno

13/01/08Seminario de Bases de Datos2 Formas de comunicación entre Java y Oracle 1 Java dentro de Oracle: Oracle posee su propio compilador y generador de clases Java Java desde afuera de Oracle: Hay 2 Formas: 1. En forma aislada "Stand Alone", es decir, un programa Java que accesa la base de datos e imprime los resultados por "consola"

13/01/08Seminario de Bases de Datos3 2. Por medio de JSP: Se accesa a la base de datos desde Java y los resultados pueden visualizarse por medio de un navegador. Se requiere para este caso un servidor web (Tomcat, Jrun etc.) Se comenzará con Java dentro de Oracle Formas de comunicación entre Java y Oracle 2

13/01/08Seminario de Bases de Datos4 Java dentro de Oracle 1 Ejecutar en SQL*Plus el siguiente código: CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "prueba" AS public class prueba { public static String Hello(String cadena) { return "Bienvenido a Java con Oracle " + cadena; } }; /

13/01/08Seminario de Bases de Datos5 Adicionalmente se debe crear una función wrapper (de envoltura) que lo que hace es asociar una función de Oracle con un método de la clase Java: Ejecutar en SQL*Plus: CREATE OR REPLACE FUNCTION saludo(nom VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME ' prueba.Hello (java.lang.String) return java.lang.String ' ; / Java dentro de Oracle 2 Función wrapper

13/01/08Seminario de Bases de Datos6 Para invocarla se hace lo siguiente: DROP TABLE estudiante; CREATE TABLE estudiante( cedula NUMBER(8) PRIMARY KEY, nombre VARCHAR2(15) ); INSERT INTO estudiante VALUES (7173, ' Pedro ' ); INSERT INTO estudiante VALUES (7178, ' Luis ' ); INSERT INTO estudiante VALUES (4311, ' María ' ); Java dentro de Oracle 3

13/01/08Seminario de Bases de Datos7 Java dentro de Oracle 4 Ejecutar: SELECT cedula, saludo(nombre) FROM estudiante; Si se dispone de archivos.class ya generados pero no se posee el fuente*, dichas clases se pueden cargar usando el comando loadjava desde la línea de comando (DOS, UNIX etc.) así: * Aunque existen programas que permiten obtener el código fuente desde un.class como Decafe Pro el código fuente desde un.class como Decafe Pro

13/01/08Seminario de Bases de Datos8 Java dentro de Oracle 5 Abrir cualquier editor de Java (JCreator, Java Editor, Kawa etc.) compilar el siguiente código para generar el.class (Recordar que el nombre del archivo fuente debe ser prueba2.java ) public class prueba2 { public static String Hello(String cadena) { return "Otra bienvenida a Java con Oracle " + cadena; } };

13/01/08Seminario de Bases de Datos9 Java dentro de Oracle 6 Si la compilación es exitosa, se debe generar el archivo prueba2.class,cargarlo a Oracle desde DOS usando el comando: loadjava -user prueba2.class Nota: Antes de ejecutar el comando situarse en el directorio donde está el archivo prueba2.class o darle el camino completo… Nombre de la BD

13/01/08Seminario de Bases de Datos10 Java dentro de Oracle 7 Ahora en Oracle:(SQL*Plus) CREATE OR REPLACE FUNCTION saludo2(nom VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME ' prueba2.Hello (java.lang.String) return java.lang.String ' ; / SELECT cedula, saludo(nombre), saludo2(nombre) FROM estudiante;

13/01/08Seminario de Bases de Datos11 Java dentro de Oracle 8 Ahora veamos un ejemplo más complejo: Vamos a ejecutar en SQL*Plus el siguiente código: CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Paymaster" AS import java.sql.*; import java.io.*; import oracle.sql.*; import oracle.jdbc.driver.*; import java.math.*; Continúa

13/01/08Seminario de Bases de Datos12 Java dentro de Oracle 9 public class Paymaster { public static BigDecimal wages(STRUCT e) throws java.sql.SQLException { Object[] attribs = e.getAttributes(); BigDecimal sal = (BigDecimal)(attribs[2]); // [2] = salario BigDecimal comm = (BigDecimal)(attribs[3]);//[3] = comision BigDecimal pay = sal; if (comm != null) pay = pay.add(comm); return pay; } / Fin del código

13/01/08Seminario de Bases de Datos13 Java dentro de Oracle 10 Crear adicionalmente por medio de SQL*Plus: CREATE OR REPLACE TYPE emple_type AS OBJECT( codigo NUMBER(4), nom VARCHAR2(10), salario NUMBER(6), comision NUMBER(6) ); / DROP TABLE empleado; CREATE TABLE empleado OF emple_type ( codigo PRIMARY KEY, salario NOT NULL ); [0] [1] [2] [3] Desde el punto de vista de Java este es el orden de los atributos en Object

13/01/08Seminario de Bases de Datos14 Java dentro de Oracle 11 INSERT INTO empleado VALUES(10, ' Luis ',100, 50); INSERT INTO empleado VALUES(22, ' Lisa ', 200, null); INSERT INTO empleado VALUES(33, ' Casandra ', 300, 10); Se crea la función de mapeo (wrapper): CREATE OR REPLACE FUNCTION sal_tot(e emple_type) RETURN NUMBER AS LANGUAGE JAVA NAME ' Paymaster.wages (oracle.sql.STRUCT) return BigDecimal ' ; /

13/01/08Seminario de Bases de Datos15 Java dentro de Oracle 12 Ahora: SELECT ' El salario total del empleado con cédula ' || TO_CHAR(codigo) || ' es: ' || sal_tot(VALUE(e)) FROM empleado e; ¡Se le está pasando a Java el objeto de Oracle completo!

13/01/08Seminario de Bases de Datos16 Java dentro de Oracle 13 Un método de un tipo puede "prácticamente" ser implementado en Java: Crear el siguiente Código Java en SQL*Plus: CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "num" AS import java.math.*; import java.math.BigDecimal; public class num { public static BigDecimal square(BigDecimal n) { return n.multiply(n); } /

13/01/08Seminario de Bases de Datos17 Java dentro de Oracle 14 CREATE OR REPLACE FUNCTION cuadradojava(n IN NUMBER) RETURN NUMBER AS LANGUAGE JAVA NAME 'num.square(java.math.BigDecimal) return java.math.BigDecimal'; / Creación del tipo: DROP TYPE numero_tip FORCE; CREATE TYPE numero_tip AS OBJECT ( numero NUMBER(6), MEMBER FUNCTION cuadrado(n IN number) RETURN NUMBER ); / Función de mapeo (Wrapper):

13/01/08Seminario de Bases de Datos18 Java dentro de Oracle 15 Creación del cuerpo del tipo: CREATE OR REPLACE TYPE BODY numero_tip AS MEMBER FUNCTION cuadrado(n IN number) RETURN NUMBER IS BEGIN RETURN cuadradojava(numero); END cuadrado; END; / Creación de tabla e invocación del método: CREATE TABLE numeros OF numero_tip; INSERT INTO numeros VALUES(3); INSERT INTO numeros VALUES(9); SELECT numero, l.cuadrado(numero) FROM numeros l; Se invoca a la función Wrapper

13/01/08Seminario de Bases de Datos19 Java desde afuera de Oracle 1 Desde un programa Java independiente. Mediante el uso de JDBC: Conjunto de clases Java que permiten la interacción con la base de datos. Procedimiento: - Crear el siguiente código en un editor de Java y compilarlo (por ejemplo en el JCreator) - El archivo nombrarlo conexion.java JDBC= Java DataBase Connection

13/01/08Seminario de Bases de Datos20 Java desde afuera de Oracle 2 import java.sql.*; import java.math.*; class conexion { static public void main( String[] args ) { Connection conn; Statement sentencia; ResultSet resultado; System.out.println( "Conexión a la base de datos..." ); Continúa

13/01/08Seminario de Bases de Datos21 Java desde afuera de Oracle 3 try{ // Se carga el driver JDBC-ODBC Class.forName ("oracle.jdbc.driver.OracleDriver"); } catch( Exception e ) { System.out.println( "No se pudo cargar el driver JDBC"); return; } try{ // Se establece la conexión con la base de datos conn = DriverManager.getConnection "usuario", "password"); sentencia = conn.createStatement(); } catch( SQLException e ) { System.out.println( "No hay conexión con la base de datos." ); return; } Continúa

13/01/08Seminario de Bases de Datos22 Java desde afuera de Oracle 4 try { System.out.println( "Seleccionando..." ); resultado = sentencia.executeQuery ("SELECT codigo,nom,salario FROM empleado"); //Se recorren las tuplas retornadas while (resultado.next()) { System.out.println(resultado.getInt("codigo")+ "---" + resultado.getString("nom")+ "---" + resultado.getInt("salario")); } Continúa

13/01/08Seminario de Bases de Datos23 Java desde afuera de Oracle 5 conn.close(); //Cierre de la conexión } catch( SQLException e ){ System.out.println("Error: " + e.getMessage()); } System.out.println("Consulta finalizada."); } //Fin del main } //Fin de la clase Fin del código

13/01/08Seminario de Bases de Datos24 Java desde afuera de Oracle 6 Compilar… (Con el JCreator use por ejemplo el menú Build y la opcion Compile File) Para ejecutar utilice la opcion Execute File del mismo menú El resultado en pantalla debe ser: Conexión a la base de datos... SELECCIONANDO Luis Lisa Casandra Consulta finalizada.

13/01/08Seminario de Bases de Datos25 Java desde afuera de Oracle 7 Para que el programa Java accese a la base de datos, se debe adicionar a Java una librería especial ("driver" para Oracle) Se puede bajar del sitio de Oracle: también está en la página del curso El driver debe ser ubicado en el directorio c:\java\jre\lib\ext En general allí se colocan las librerías adicionales que se deseen incorporar a Java. java es el nombre del directorio donde está instalado java

13/01/08Seminario de Bases de Datos26 Java desde afuera de Oracle 8 Otra opción es: Colocar el driver en el mismo directorio donde está el archivo conexión.class Ahora desde DOS situarse en dicho directorio y ejecutar: java -classpath classes129i.zip; conexion Driver

13/01/08Seminario de Bases de Datos27 Java desde afuera de Oracle 9 CHAR VARCHAR VARCHAR2 NUMBER DATE VARRAY o tabla anidada Tipo de dato del usuario String java.Math.BigDecimal java.sql.TimeStamp ARRAY STRUCT Cómo se mapean algunos tipos de datos de Oracle a Java:

13/01/08Seminario de Bases de Datos28 Java desde afuera de Oracle 10 Desde Java es posible: Crear Destruir Actualizar Borrar Ejecutar etc. Veamos el siguiente ejemplo donde se crea un VARRAY de números: Objetos en la base de datos Tablas, tipos, vistas etc.

13/01/08Seminario de Bases de Datos29 Java desde afuera de Oracle 11 import java.sql.*; import java.math.*; class crea_varray { static public void main(String[] args ) { Connection conn; Statement stmt; ResultSet resultado; System.out.println( "Conexión a la base de datos..." ); // Se carga el driver JDBC-ODBC try { Class.forName("oracle.jdbc.driver.OracleDriver"); }

13/01/08Seminario de Bases de Datos30 Java desde afuera de Oracle 12 catch(Exception e ) { System.out.println("No se pudo cargar el driver JDBC" ); return; } try { // Se establece la conexión con la base de datos conn = DriverManager.getConnection "usuario", "password"); stmt = conn.createStatement(); } catch( SQLException e ) { System.out.println("No hay conexión con la base de datos."); return; }

13/01/08Seminario de Bases de Datos31 Java desde afuera de Oracle 13 try { System.out.println( "Creando objetos en la BD..." ); stmt.execute("CREATE TYPE num_varray AS VARRAY(10) OF NUMBER(4,2)"); stmt.execute("CREATE TABLE varray_table(cod varchar2(8), notas num_varray)"); stmt.execute("INSERT INTO varray_table VALUES(100, num_varray(3,4))"); stmt.execute("INSERT INTO varray_table VALUES(200, num_varray(2,5,3))"); conn.close(); } catch( SQLException e ) { System.out.println("Error " + e.getMessage()); return; } System.out.println( "Creación de objetos finalizada." ); }