+ Responder tema
Resultados 1 al 4 de 4

Tema: conectar java EE con varias bases de datos

  1. #1
    Dragonauta en Proceso
    Fecha de ingreso
    09 sep, 10
    Ubicación
    Manizales
    Mensajes
    64
    Gracias
    18
    Agradecido 9 veces en 8 Mensajes

    Predeterminado conectar java EE con varias bases de datos

    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'";
        }
        
        
     
    }

  2. #2
    Recien Nacido
    Fecha de ingreso
    14 ago, 11
    Mensajes
    5
    Gracias
    0
    Agradecido 0 veces en 0 Mensajes

    Predeterminado

    Tal vez en Oracle debes hacer un SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE', no estoy seguro de la condición pero la tabla es esa. Un saludo y me avisas si te sirve.

  3. #3
    Dragonauta en Proceso
    Fecha de ingreso
    09 sep, 10
    Ubicación
    Manizales
    Mensajes
    64
    Gracias
    18
    Agradecido 9 veces en 8 Mensajes

    Predeterminado

    sysdent la sentencia que me pasate no me arroja nada ni quitandole el WHERE

    pero bueno la verdad ya descubri lo que necesito, cuando uno monta un servidor con motor de base de datos Postgres este crea por defecto una base de datos llamada postgres en la cual se almacenan las bases de datos que se crean en este servidor, las tablas que tienen dichas bases de datos pero toda esta informacion esta almacenada en la Bd por defecto (postgres)... mi pregunta es la siguiente en oracle ahi una BD por defecto como en el caso de postgres?

  4. #4
    Recien Nacido
    Fecha de ingreso
    14 ago, 11
    Mensajes
    5
    Gracias
    0
    Agradecido 0 veces en 0 Mensajes

    Predeterminado

    Pues en una base de datos de Oracle yo hago la consulta select * from user_tables y en efecto me retorna el listado de tablas con sus atributos, la pregunta es con que usuario te estás conectado para ejecutar la consulta?

+ Responder tema

Visitantes encuentran esta página buscando por:

conectar java con diferentes bases de datos

conectar java a diferentes bases

conectarse a una base de datos postgres con multiples schemas en javaconectarse a dos bases de datos en javaconexion a base de datos java eeconectarse a 2 bases de datos en javaconexion base de datos java eecomo conectar desde java a un motor de base de datos sqldescripcion conectar a la base de datosconectar dos bases de datos en javacodigo para conectar java a una base de datosabrir dos bases de datos javacomo conectarse en java a diferentes bases de datosjava ee base de datosconexion a multiples bases de datos javaque ee una base de datosconeccion de base de datos con java eeconectar 2 bases de datos javajava conexion a dos bases de datos distintasjava varias bases de datosconexion a 2 bases de datos en javaconectar varias bases datos javaseleccionar una base de datos en javarecordset desconectado javacomo conectar una base de datos con varias tablas en java

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes