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;
/