Con este java Source se puede comprobar si las credenciales de un usuario son «válidas» en la base de datos.
JAVA SOURCE:
DROP JAVA SOURCE "TestConnect"; CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "TestConnect" as import java.sql.DriverManager; import java.sql.Connection; import java.sql.SQLException; public class TestConnect { //public static void main(String[] argv) public static String TestConnect(String p_DataBase, String p_Username, String p_Password ) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { //System.out.println("Where is your Oracle JDBC Driver?"); e.printStackTrace(); return "N"; } //System.out.println("Oracle JDBC Driver Registered!"); Connection connection = null; try { connection = DriverManager.getConnection( p_DataBase, p_Username, p_Password); connection.close(); } catch (SQLException e) { //System.out.println("Connection Failed! Check output console"); e.printStackTrace(); return "N"; } if (connection != null) { //System.out.println("You made it, take control your database now!"); return "S"; } else { //System.out.println("Failed to make connection!"); return "N"; } } } /
FUNCIONES EN ORACLE:
FUNCIÓN QUE REFERENCIA AL JAVA SOURCE:
CREATE OR REPLACE FUNCTION ValidaClave_JAVA (p_BaseDatos IN varchar2,
p_Usuario IN varchar2,
p_Password IN varchar2)
RETURN VARCHAR2
IS
LANGUAGE JAVA
NAME ‘TestConnect.TestConnect(java.lang.String,
java.lang.String,
java.lang.String) return String’ ;
/
FUNCIÓN QUE VALIDA LA CONEXIÓN:
La variable v_UrlBaseDatos es al que contiene el string de conexión a la base de datos, se debe sustituir por la referencia real a la base de datos del HOST, PUERTO Y SID BASE DE DATOS (Esto se puede obtener de la configuración definida en el TNSNAMES.ORA).
CREATE OR REPLACE FUNCTION ValidaClave_db (p_Usuario IN varchar2,
p_PassWord IN varchar2)
RETURN VARCHAR2
IS
v_Resultado VARCHAR2 (1000) := ‘N’;
v_UrlBaseDatos VARCHAR2 (1000)
:= ‘jdbc:oracle:thin:@HOST:PUERTO:SIDBASEDATOS’;
BEGIN
IF p_Usuario = USER
THEN
v_Resultado :=
‘El usuario autorizador no puede ser el mismo que esta conectado. ‘;
RETURN (v_Resultado);
END IF;
v_Resultado := ValidaClave_JAVA (v_UrlBaseDatos, p_Usuario, p_PassWord);
RETURN (v_Resultado);
END;
/