Académique Documents
Professionnel Documents
Culture Documents
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/08
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
13/01/08
13/01/08
13/01/08
Si se dispone de archivos .class ya generados pero no se posee el fuente*, dichas clases se pueden cargar usando el comando desde la lnea de comando (DOS, UNIX etc.) as:
* Aunque existen programas que permiten obtener el cdigo fuente desde un .class como Decafe Pro
loadjava
13/01/08
Abrir cualquier editor de Java (JCreator, Java Editor, Kawa etc.) compilar el siguiente cdigo 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/08
Si la compilacin es exitosa, se debe generar el archivo prueba2.class ,cargarlo a Oracle desde DOS usando el comando: Nombre de la BD
loadjava -user username/password@bd prueba2.class
Nota: Antes de ejecutar el comando situarse en el directorio donde est el archivo prueba2.class o darle el camino completo
13/01/08
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/08
10
Contina
13/01/08 Seminario de Bases de Datos 11
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; } } /
10
13
11
13/01/08
14
12
13/01/08
15
13
Un mtodo de un tipo puede "prcticamente" ser implementado en Java: Crear el siguiente Cdigo 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/08 Seminario de Bases de Datos 16
14
13/01/08
17
15
CREATE OR REPLACE TYPE BODY numero_tip AS MEMBER FUNCTION cuadrado(n IN number) RETURN NUMBER IS BEGIN RETURN cuadradojava(numero); END cuadrado; Se invoca a la funcin Wrapper END; /
CREATE TABLE numeros OF numero_tip; INSERT INTO numeros VALUES(3); INSERT INTO numeros VALUES(9); SELECT numero, l.cuadrado(numero) FROM numeros l; 13/01/08 Seminario de Bases de Datos 18
Procedimiento: - Crear el siguiente cdigo en un editor de Java y compilarlo (por ejemplo en el JCreator) - El archivo nombrarlo conexion.java JDBC= Java DataBase Connection
13/01/08
19
Contina
13/01/08 Seminario de Bases de Datos 20
Contina
13/01/08 Seminario de Bases de Datos 21
Contina
13/01/08 Seminario de Bases de Datos 22
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:
Conexin a la base de datos... SELECCIONANDO... 10---Luis---100 22---Lisa---200 33---Casandra---300 Consulta finalizada.
13/01/08 Seminario de Bases de Datos 24
Para que el programa Java accese a la base de datos, se debe adicionar a Java una librera especial ("driver" para Oracle) Se puede bajar del sitio de Oracle: http://otn.oracle.com , tambin est en la pgina del curso El driver debe ser ubicado en el directorio c:\java\jre\lib\ext En general all se colocan las libreras adicionales que se deseen incorporar a Java.
Otra opcin es: Colocar el driver en el mismo directorio donde est el archivo conexin.class Ahora desde DOS situarse en dicho directorio y ejecutar:
java -classpath classes129i.zip; conexion
Driver
13/01/08 Seminario de Bases de Datos 26
13/01/08
27
10
11
29
12
stmt = conn.createStatement(); } catch( SQLException e ) { System.out.println("No hay conexin con la base de datos."); return; }
13/01/08
30
13
13/01/08
31