domingo, 22 de septiembre de 2013

Conectar Oracle con Eclipse

Programas o Software requerido

Para realizar la conexión necesitamos tener los siguientes programas:

Ahora debemos conocer al usuario SYS de nuestra base de datos para ella haremos los siguientes pasos:

Paso 1 - Acceder:

Si tienen windows 7 busquen en inicio Run SQL Command Line o en caso contrario ingresen al CMD o linea de comando y escriban sqlplus /nolog, en cualquiera de los dos casos en la pantalla de comando se mostrará lo siguiente:

Microsoft Windows [Versión 6.1.7601]   
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\PC>sqlplus /nolog
SQL*Plus: Release 11.2.0.2.0 Production on Dom Sep 22 23:44:35 2013
Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL>

Paso 2 - Conectarse:

Luego deberá identificarse como usuario sysdba, para ellos ingresar lo siguiente:

SQL*Plus: Release 11.2.0.2.0 Production on Dom Sep 22 23:55:12 2013
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> conn system/jhon as sysdba
Connected.
SQL> show user
USER is "SYS"

Paso 3 - Crear una base de datos:

Ahora creamos nuestra base de datos a conectar con Eclipse (Les dejo de ejemplo una base de datos que cree para una tienda de ventas)

DECLARE
 N INT;
 COMMAND VARCHAR2(200);
BEGIN
 COMMAND := 'DROP USER TIENDA CASCADE';
 SELECT COUNT(*) INTO N
 FROM DBA_USERS
 WHERE USERNAME = 'TIENDA';
 IF ( N = 1 ) THEN
  EXECUTE IMMEDIATE COMMAND;
 END IF;
END;
/

CREATE USER TIENDA IDENTIFIED BY CLAVE;
GRANT CONNECT, RESOURCE TO TIENDA;

-- =============================================
-- CONECTARSE A LA APLICACIÓN
-- =============================================

CONNECT TIENDA/CLAVE

-- -----------------------------------------------------
-- Tabla Empleado
-- -----------------------------------------------------

CREATE  TABLE empleado (
  empl_DNI  INT NOT NULL ,
  empl_Paterno  VARCHAR(45) NOT NULL ,
  empl_Nombre  VARCHAR(45) NOT NULL ,
  empl_Materno  VARCHAR(45) NOT NULL ,
  empl_email  VARCHAR(25) NULL ,
  empl_telefono  VARCHAR(16) NULL ,
  empl_Direccion  VARCHAR(65) NOT NULL ,
  empl_usuario  VARCHAR(12) NOT NULL ,
  empl_clave  VARCHAR(10) NOT NULL 
);

ALTER TABLE empleado
 ADD CONSTRAINT PK_empleado
 PRIMARY KEY (empl_DNI);
 
ALTER TABLE empleado
 ADD CONSTRAINT U_empleado
 UNIQUE (empl_usuario);

Este código crea el usuario TIENDA identificado con CLAVE, luego inicia sesión con este usuario y crea la tabla.

Paso 4 - Proyecto en Eclipse:

Ahora procedemos a Eclipse donde creamos un nuevo proyecto, colocamos el nombre del proyecto como queramos llamarlo. Luego continuamos y vamos a la pestaña Libraries (Bibliotecas) y dentro de ella agregamos una nueva (Add Library).

Despliega una nueva ventana y elegimos la opción Connectivity Driver Definition,lo más seguro es que su lista este vacía así que al lado hay un icono con la descripción New Driver Definition, la elegimos y damos un clic.

En una nueva ventana escogemos Oracle dentro de la opción Vendor Filter. Aparecerán muchas opciones con "Oracle Thin Driver", seleccionar el que corresponde a la versión de nuestra BD. En mi caso System version será 11.

Ahora la biblioteca esta configurada, pero no el archivo jar necesario, entonces se debe seleccionar la biblioteca Oracle Thin Driver y dar clic a la opción Add External JARs y luego seleccionar el archivo JAR correspondiente, en mi caso el ojdbc14, y aceptar.

Dentro del proyecto se observa las bibliotecas del Jdk y de Oracle

Paso 5 - Clase de conexión y prueba:

Creo un paquete de nombre accesoBD y dentro de el la Clase AccesoBD la cual tendrá la siguiente codificación:
package accesoBD;

import java.sql.Connection;
import java.sql.DriverManager;

public class AccesoBD {
 public static Connection getConnection() throws Exception{
 Connection cn;
 Class.forName("oracle.jdbc.OracleDriver").newInstance();
 String url = "jdbc:oracle:thin:@localhost:1521:XE";
 cn = DriverManager.getConnection(url, "TIENDA", "CLAVE");
 return cn;
 }
}

  • Bien ahora que son cada una de estas cosas, hay que recalcar que los valores que varían generalmente y nos interesan son:
   oracle.jdbc.OracleDriver
   jdbc:oracle:thin:@localhost:1521:XE
   url, "TIENDA", "CLAVE"
  • El primero hace referencia al driver de oracle, si utilizáramos otra base de datos usaríamos otro driver
  • El segundo al URL de nuestra base de datos generalmente la obtendrán con la siguiente fórmula jdbc:oracle:thin:@[HOST][:PORT]:SID todos estos datos son proporcionados por oracle durante la instalación y en caso deseen conocerlos pueden utilizar la herramienta SqlDeveloper o la perspectiva de Base de datos de Eclipse o Netbeans para encontrar el URL.
  • Bueno el tercero llama a nuestra URL, luego coloca el nombre de USER y a continuación la clave por la cual se identifica.
  • Ahora probemos si tenemos una conexión exitosa o no creando una clase Prueba. java dentro de un paquete al que yo llamaré test

package services;

import java.sql.Connection;
import java.sql.PreparedStatement;

import javax.swing.JOptionPane;

import accesoBD.AccesoBD;

public class PruebaBD {

 public static void main(String[] args) {
  Connection cn = null;
  try {
   cn = AccesoBD.getConnection();
   cn.setAutoCommit(false);
   String query = "INSERT INTO EMPLEADO VALUES "
     + "('Empl1', 'Coronel', 'Castillo',"
     + " 'Gustavo', 'GCoronel', '123456')";
   PreparedStatement pstm = cn.prepareStatement(query);
   pstm.executeUpdate();
   cn.commit();
   JOptionPane.showMessageDialog(null,
   "Conexion correcta \n Empleado agregado", null,
   JOptionPane.INFORMATION_MESSAGE);

  } catch (Exception e) {
   JOptionPane.showMessageDialog(null, "ERROR", null,
   JOptionPane.INFORMATION_MESSAGE);
   try {
    cn.rollback();
   } catch (Exception e1) {
   }
  }
 }
}