Saltar la navegación

5.4.- JDBC conexión a una base de datos.

La API JDBC, aparte de algunas clases especificas, mayoritariamente está compuesto de interfaces que el controlador implementa dándoles la funcionalidad adecuada.

Para asegurar la interoperabilidad, las aplicaciones no referenciarán nunca las clases concretas de ningún controlador sino las interfaces estándares de la API JDBC. Para ello, la aplicación nunca podrá instanciar directamente los objetos JDBC con una sentencia new , sino que se crearán indirectamente llamando algún método de alguna clase u objeto ya existente. 

La interfaz Connection representa una conexión a la base de datos, una vía de comunicación entre la aplicación y el SGBD. Los objetos Connection mantendrán la capacidad de comunicarse con el sistema gestor mientras permanezcan abiertos. Esto es, desde que se crean hasta que se cierran utilizando el método close.

El objeto Connection está totalmente vinculado a una fuente de datos, por eso en pedir la conexión hay que especificar de qué fuente se trata siguiendo el protocolo JDBC e indicando la url de los datos, y en su caso el usuario y password . Se obtiene utilizando  el método getConnection()) de la clase DriverManager. Este método recibe como parámetro la URL de JDBC que identifica a la base de datos con la que queremos realizar la conexión:

getConnection(String url)
getConnection(String url, Properties info)
getConnection(String URL, String user, String password);

Cuando se presenta con una URL específica, DriverManager itera sobre la colección de drivers registrados hasta que uno de ellos reconoce la URL especificada. Si no se encuentra ningún conector adecuado, se lanza una SQLException.

La forma más sencilla de URL JDBC es una lista de tres valores separados mediante dos puntos. El primer valor de la lista representa el protocolo, que es siempre jdbc para los URL JDBC. El segundo valor es el subprotocolo . El tercer valor es el nombre de sistema para establecer la conexión con un sistema específico, dependerá del tipo de controlador utilizado, del host donde se aloje el SGBD, del puerto que este use para escuchar las peticiones y del nombre de la base de datos o esquema con el que queremos trabajar.

Existen dos valores especiales que pueden utilizarse para conectarse con la base de datos local. Son *LOCAL y localhost (ambos son sensibles a mayúsculas y minúsculas). También puede suministrarse un nombre de sistema específico, de la forma siguiente:

Prueba el siguiente ejemplo en un nuevo proyecto, configurar tu proyecto para incluir las bibliotecas JDBC de Oracle en la construcción de su ruta.  

proyecto --> boton derecho --> Build Path --> configure Build Path . Añade ojdbc6.jar

Para obtener mas información de los drivers de Oracle disponibles  y de la sintaxis de url correspondiente a cada uno de ellos.

Para conectarnos a una base de datos Oracle 11XE:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class PrimeraConexion {
public static void main(String[] args) {
		Connection conexion;
		try {
                        //url oracle con formato jdbc:oracle:thin:@<hostname>:<port>:<servicename>
                        //ur con formato  jdbc:oracle:thin:<usuario>@<hostname>:<port>:<servicename>
                        String urljdbc = "jdbc:oracle:thin:ejemplo/ejemplo@localhost:1521:XE";
                        //establecemos la conexion utilizando el metodo getConnection
                        // damos url, nombre del usuario y contraseña
			conexion = DriverManager.getConnection(urljdbc, "ejemplo", "ejemplo"); 
System.out.println("conecta"); conexion.close(); } catch (SQLException e) { e.printStackTrace(); } }
Para establecer la conexión con la BD MySQL, únicamente hay que utilizar el driver JDBC  correspondiente y configurar el proyecto para añadir la librería mysql-connector-java-5.1.47-bin.jar . 

Para obtener mas información de los drivers de mysql disponibles y de la sintaxis de url correspondiente a cada uno de ellos.

La url para una BD local es "jdbc:mysql://localhost/base datos".import java.sql.Connection

import java.sql.DriverManager;
import java.sql.SQLException;
public class PrimeraConexion {

	public static void main(String[] args) throws SQLException {
		// Establecemos la conexion con la BD
		Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/ejemplo", "root", "system");
		// Cerrar conexión
		conexion.close();
	}
}