Paso 1: Obtener el driver
En lo particular utilizo la que a la fecha de publicación de este artículo es la versión más reciente del NetBeans: la 7.0. Para crear el proyecto basta con dar clic en el botón de 'Nuevo Proyecto' o ir al menú Archivo -> Nuevo Proyecto.
Al proyecto le titularemos MapearBDOracle, aunque solo es un nombre sugerido ya que no afecta en lo más mínimo con el comportamiento del programa.
Una vez creado el proyecto el IDE nos posicionará en la clase principal del mismo y creará por sí solo el método main desde el cual ejecutaremos todos nuestros procedimientos.
Paso 3: Crear la conexión a la base de datos
Para poder crear la conexión a la base de datos necesitaremos utilizar las clases Connection y DriverManager, ambos contenidos en el paquete java.sql por lo que será necesario importarlo de la siguiente manera:
1: package mapearbdoracle;
2: .
3: .
4: import java.sql.*;
5: .
6: .
1: public static void main(String[] args) {2: Connection conexion;
3: .
4: .
Dicho objeto contendrá nuestra conexión a la base de datos, misma que nos servirá para leer su estructura.
1: Class.forName("oracle.jdbc.OracleDriver");
1: String BaseDeDatos = "jdbc:oracle:thin:@127.0.0.1:1521:ESQUEMA";
- 127.0.0.1 indica la IP del servidor Oracle.
- 1521 es el puerto de conexión por defecto.
- ESQUEMA es el esquema al cual te vas a conectar
1: conexion = DriverManager.getConnection(BaseDeDatos, "USUARIO", "contraseña");
Para que pueda compilar, debemos encerrar el código anterior dentro de un try-catch...
1: try{2: .
3: ./*codigo*/
4: .
5: }catch(Exception ex){
6: ex.printStackTrace();
7: }
1: if (conexion != null && !conexion.isClosed()) {
2: System.out.println("-> Conexion establecida");
3: }else{
4: System.out.println("->No fue posible crear la conexion!");
5: }
Paso 4: Leer la estructura de la Base de Datos.
Para poder leer la estructura de la base de datos necesitaremos un objeto de tipo oracle.jdbc.OracleDatabaseMetaData, así como 3 objetos adicionales que agregaremos de la siguiente manera:
1: System.out.println("-> Conexion establecida");
2: .
3: .
4:
5: /*Se declara el objeto que contendrá los metadatos de la BD*/
6: OracleDatabaseMetaData dbmd;
7:
8: /*Nos servirá para indicar que leeremos todas las tablas y las vistas*/
9: String tipos[] = new String[]{"TABLE", "VIEW"};
10:
11: /*Almacena los datos de la estructura de la BD*/
12: ResultSet tablas;
13:
14: /*Almacena los nombres de las tablas y vistas*/
15: ArrayList<String> datos = new ArrayList();
1: dbmd = (OracleDatabaseMetaData) conexion.getMetaData();
1: tablas = dbmd.getTables(null, "ESQUEMA", "%", tipos);
- null indica el catalogo de las tablas a utilizar
- ESQUEMA indica el esquema que contiene las tablas que deseamos obtener
- % indica los nombres de las tablas que deseamos obtener (en este caso todas)
- tipos indica los tipos de información que deseamos obtener, puede ser "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". En este caso solo las tablas y vistas.
1: while (tablas.next()) {
2: /*Se agregan los nombres de las tablas a un ArrayList*/
3: datos.add(tablas.getString(tablas.findColumn("TABLE_NAME")));
4:
5: /*Se imprimen los datos en consola*/
6: System.out.println("Tabla: "+tablas.getString(tablas.findColumn("TABLE_NAME")));
7: }
De igual manera como puedes leer todas las tablas de una base de datos se pueden leer todos los campos de una tabla, pero eso lo dejamos para otro artículo.
Te dejo todo lo necesario para que puedas realizar este tutorial, incluyendo el código fuente ;), en un archivo descargable...
Si tienes alguna duda o algo qué decir no olvides dejar tu comentario. Si te gustó el tutorial puedes indicarlo desde los botones de la parte inferior y/o compartirlo desde los botones que se encuentran al inicio del mismo (te agradecería mucho que lo hicieras).
Saludox.
Estuve intentando en phpMyAdmin y con Java el DataBaseMetaData pero algunos metosods no sirven por ejemplo getSchemas(), getImportedKeys(), no sabes otra forma de hacerlo, Gracias
ResponderBorrar