Hola comunidad he vuelto nuevamente pro aca y esta ve es para molestarlos, es que resulta que tengo que estoy haciendo una aplicacion donde se configura un servidor y a su ve colocar que motor de base de datos maneja.
una ve configurado aparece un select de las base de datos que ahi en este servidor, apenas se escoge la base de datos e eta se obtienen los esquemas...
cuando el motor es postgres no ahi problema todo funciona comun y corriente pero cuando se escoge oracle no me obtiene las base de datos...
utilizo el driver que me proporciona oracle pero no he podido lograr que me obtenga las bases de datos de un servidor con motor Oracle
si alguno me puede colaborar aca les dejo la clase Oracle
Código:package baseDatos; import java.io.PrintStream; import java.io.Serializable; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; /** * Clase que implementa InterfazBD para realizar la conexion con el motor de * base de datos Oracle */ public class Oracle implements InterfazBD,Serializable { /** * Clase del controlador de Postgres */ private static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; public String URL = "jdbc:Oracle:thin:@"; private PrintStream log = System.out; public String resultado = ""; public String schema; public String baseDatos; /** * Crea un objeto de la clase Oracle y verifica el driver de oracle */ public Oracle() { try { Class.forName(DRIVER); // log.println("Controlador: " + DRIVER + ":ok"); } catch (ClassNotFoundException cnfe) { log.println("Controlador:" + DRIVER + ":FALLO"); log.println("Excepcion: " + cnfe); } catch (ExceptionInInitializerError eiie) { log.println("Controlador:" + DRIVER + ":FALLO"); log.println("Error: " + eiie); } catch (LinkageError le) { log.println("Controlador:" + DRIVER + ":FALLO"); log.println("Error: " + le); } } /** * Metodo que conecta con el dbms utilizando las constantes DRIVER y URL * * @param usuario * nombre de usuario requerido para conectarse a la base de datos * @param clave * Contraseña, si es requerida, para conectarse al dbms, si no es * requerida debe ser null. * @param ser * nombre del servidor de la base de datos. * * @param bd * nombre de la base de datos. * * @return Objeto Connection que será utilizado para enviar las sentencias * sql, si la conexion no se realizo con exito retorna null. */ public Connection abrir(String usuario, String clave, String ser, String bd) { String url = ""; String user = ""; String password = ""; try { baseDatos = bd; url = URL+ser+":1521:"+baseDatos; /*Properties props = new Properties(); props.setProperty("user",user); props.setProperty("password",password);*/ Connection cnx = DriverManager.getConnection(url, usuario,clave); return cnx; } catch (SQLException sqle) { resultado = sqle.getMessage() + " Codigo : " + sqle.getErrorCode(); return null; } } public String getResultado() { return resultado; } /** * Metodo que retorna una cadena con la consulta para obtener los schemas de * la base de datos con la descripción de cada uno, si tiene. * * @return cadena con el sql para obtener schemas */ public String obtenerSchemas(){ //lista return "select User_id as oid, username as nspname, null as description " + "from dba_users " + "where ACCOUNT_STATUS ='OPEN' " + "and USERNAME NOT IN ('SYS', 'SYSTEM', 'ANONYMOUS')"; } /** * Metodo que retorna una cadena con la consulta para obtener las tablas del schema * seleccionado y su respectiva descripción. * * @param sch * nombre del schema seleccionado * * @return cadena con el sql para obtener tablas con un schema seleccionado con su * descripción, si exite. * * @author aneraka */ public String obtenerTablas(String sch){ schema = sch; //listo return "SELECT DISTINCT TABLE_NAME " + "FROM ALL_ALL_TABLES " + "WHERE OWNER LIKE '"+schema+"'"; } /** * Metodo que retorna una cadena con la consulta para obtener las llaves foraneas * de una tabla seleccionada. * * @param padre * tabla que se comportara como padres en el arbol, para obtener sus llaves * foraneas * * @return cadena con el sql para obtener FK de una tabla seleccionada, además * retorna el oid de la tabla a la que esta referenciada cada llave. */ public String obtenerFk(String padre){ //listo return "select UCC.CONSTRAINT_NAME as conname, UCC.COLUMN_NAME as attname, " + "UC.TABLE_NAME as confrelid , UC.OWNER as relnamespace " + "from USER_CONS_COLUMNS UCC, USER_CONSTRAINTS UC, USER_CONSTRAINTS UC2" + "where UCC.CONSTRAINT_NAME = UC.CONSTRAINT_NAME" + "and UC.R_CONSTRAINT_NAME = UC2.CONSTRAINT_NAME(+)" + "and UCC.TABLE_NAME = '"+padre+"'" + "and UC.CONSTRAINT_TYPE = 'R' --sólo las foráneas" + "order by UCC.CONSTRAINT_NAME"; } /** * Metodo que retorna una cadena con la consulta para obtener los campos de una tabla. * * @param tabla * oid de la tabla de la cual se necesita conocer los campos y su descripcion * si existe. * * @return cadena con el sql para obtener los campos de una tabla con su descripcion * si existe. */ public String obtenerCamposTabla(String tabla){ // listo return "select column_name as attname, data_type as typname, null as description" + "from all_tab_columns" + "where table_name = '"+tabla+"'" + "and owner= '"+schema+"' "; } public String obtenerRelacionesCamposFk(String sc, String tabla, String campo){ //listo return "select UCC.CONSTRAINT_NAME as connname, UCC.COLUMN_NAME as attname, " + "UC.TABLE_NAME as confrelid, UC.OWNER as relnamespace" + "from USER_CONS_COLUMNS UCC, USER_CONSTRAINTS UC, USER_CONSTRAINTS UC2" + "where UCC.CONSTRAINT_NAME = UC.CONSTRAINT_NAME" + "and UC.R_CONSTRAINT_NAME = UC2.CONSTRAINT_NAME(+)" + "and UCC.TABLE_NAME = '"+tabla+"'" + "and UC.CONSTRAINT_TYPE = 'R'" + "order by UCC.CONSTRAINT_NAME"; } public String obtenerNombreCamposRelacionados(String tabla, String numAtt){ //listo return "select COLUMN_NAME, TABLE_NAME, COLUMN_ID, OWNER " + "from ALL_TAB_COLUMNS where TABLE_NAME = '"+tabla+"'" + "and COLUMN_ID= 1 AND COLUMN_ID >0 "; } public String obtenerBasesDatos(){ //listo return "select value from v$system_parameter where name = 'db_name'"; } }



LinkBack URL
About LinkBacks
Citar