JDBC: conexiones de base de datos

Una vez que haya instalado el controlador adecuado, es hora de establecer una conexión de base de datos mediante JDBC.

La programación involucrada para establecer una conexión JDBC es bastante simple. Estos son estos cuatro simples pasos:

  • Import JDBC Packages: Añadir import declaraciones a su programa Java para importar las clases requeridas en su código Java.

  • Register JDBC Driver: Este paso hace que la JVM cargue la implementación del controlador deseada en la memoria para que pueda cumplir con sus solicitudes JDBC.

  • Database URL Formulation: Esto es para crear una dirección con el formato adecuado que apunte a la base de datos a la que desea conectarse.

  • Create Connection Object:Finalmente, codifique una llamada al método getConnection () del objeto DriverManager para establecer una conexión real a la base de datos.

Importar paquetes JDBC

los Import Las declaraciones le dicen al compilador de Java dónde encontrar las clases a las que hace referencia en su código y se colocan al principio de su código fuente.

Para usar el paquete JDBC estándar, que le permite seleccionar, insertar, actualizar y eliminar datos en tablas SQL, agregue las siguientes importaciones a su código fuente:

import java.sql.* ;  // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support

Registrar controlador JDBC

Debe registrar el controlador en su programa antes de usarlo. El registro del controlador es el proceso mediante el cual el archivo de clase del controlador de Oracle se carga en la memoria, por lo que se puede utilizar como implementación de las interfaces JDBC.

Necesita hacer este registro solo una vez en su programa. Puede registrar un conductor de dos formas.

Enfoque I - Class.forName ()

El enfoque más común para registrar un controlador es utilizar Java Class.forName(), para cargar dinámicamente el archivo de clase del controlador en la memoria, que lo registra automáticamente. Este método es preferible porque le permite hacer que el registro del controlador sea configurable y portátil.

El siguiente ejemplo usa Class.forName () para registrar el controlador de Oracle:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Puedes usar getInstance() método para trabajar en torno a las JVM no compatibles, pero luego tendrá que codificar dos excepciones adicionales de la siguiente manera:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("Error: access problem while loading!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("Error: unable to instantiate driver!");
   System.exit(3);
}

Enfoque II - DriverManager.registerDriver ()

El segundo enfoque que puede utilizar para registrar un controlador es utilizar la DriverManager.registerDriver() método.

Debe utilizar el método registerDriver () si está utilizando una JVM que no es compatible con JDK, como la proporcionada por Microsoft.

El siguiente ejemplo usa registerDriver () para registrar el controlador de Oracle:

try {
   Driver myDriver = new oracle.jdbc.driver.OracleDriver();
   DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Formulación de URL de base de datos

Una vez que haya cargado el controlador, puede establecer una conexión utilizando el DriverManager.getConnection()método. Para una referencia sencilla, permítame enumerar los tres métodos DriverManager.getConnection () sobrecargados:

  • getConnection (URL de cadena)

  • getConnection (URL de cadena, prop de propiedades)

  • getConnection (URL de cadena, usuario de cadena, contraseña de cadena)

Aquí cada formulario requiere una base de datos URL. Una URL de base de datos es una dirección que apunta a su base de datos.

La formulación de una URL de base de datos es donde ocurren la mayoría de los problemas asociados con el establecimiento de una conexión.

La siguiente tabla enumera los nombres de los controladores JDBC más populares y la URL de la base de datos.

RDBMS Nombre del controlador JDBC Formato de URL
MySQL com.mysql.jdbc.Driver jdbc:mysql://nombre de host / nombre de base de datos
ORÁCULO oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@nombre de host: número de puerto: nombre de la base de datos
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:nombre de host: número de puerto / nombre de la base de datos
Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:nombre de host: número de puerto / nombre de la base de datos

Toda la parte resaltada en formato URL es estática y solo debe cambiar la parte restante según la configuración de su base de datos.

Crear objeto de conexión

Hemos enumerado tres formas de DriverManager.getConnection() método para crear un objeto de conexión.

Usar una URL de base de datos con un nombre de usuario y contraseña

La forma más utilizada de getConnection () requiere que pase una URL de base de datos, un nombre de usuario y una contraseña :

Suponiendo que está utilizando Oracle thin controlador, especificará un valor host: puerto: databaseName para la parte de la base de datos de la URL.

Si tiene un host en la dirección TCP / IP 192.0.0.1 con un nombre de host amrood, y su oyente de Oracle está configurado para escuchar en el puerto 1521, y el nombre de su base de datos es EMP, entonces la URL completa de la base de datos sería:

jdbc:oracle:thin:@amrood:1521:EMP

Ahora debe llamar al método getConnection () con el nombre de usuario y la contraseña adecuados para obtener un Connection objeto de la siguiente manera:

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

Usar solo una URL de base de datos

Una segunda forma del método DriverManager.getConnection () requiere solo una URL de base de datos:

DriverManager.getConnection(String url);

Sin embargo, en este caso, la URL de la base de datos incluye el nombre de usuario y la contraseña y tiene la siguiente forma general:

jdbc:oracle:driver:username/[email protected]

Entonces, la conexión anterior se puede crear de la siguiente manera:

String URL = "jdbc:oracle:thin:username/[email protected]:1521:EMP";
Connection conn = DriverManager.getConnection(URL);

Usar una URL de base de datos y un objeto de propiedades

Una tercera forma del método DriverManager.getConnection () requiere una URL de base de datos y un objeto Propiedades -

DriverManager.getConnection(String url, Properties info);

Un objeto de propiedades contiene un conjunto de pares de palabras clave-valor. Se utiliza para pasar las propiedades del controlador al controlador durante una llamada al método getConnection ().

Para hacer la misma conexión hecha por los ejemplos anteriores, use el siguiente código:

import java.util.*;

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );

Connection conn = DriverManager.getConnection(URL, info);

Cerrar conexiones JDBC

Al final de su programa JDBC, es necesario cerrar explícitamente todas las conexiones a la base de datos para finalizar cada sesión de la base de datos. Sin embargo, si lo olvida, el recolector de basura de Java cerrará la conexión cuando limpie los objetos obsoletos.

Depender de la recolección de basura, especialmente en la programación de bases de datos, es una práctica de programación muy pobre. Debe tener el hábito de cerrar siempre la conexión con el método close () asociado con el objeto de conexión.

Para asegurarse de que una conexión esté cerrada, puede proporcionar un bloque 'finalmente' en su código. Un bloque finalmente siempre se ejecuta, independientemente de que ocurra una excepción o no.

Para cerrar la conexión abierta anterior, debe llamar al método close () de la siguiente manera:

conn.close();

El cierre explícito de una conexión conserva los recursos del DBMS, lo que hará feliz al administrador de su base de datos.

Para una mejor comprensión, le sugerimos que estudie nuestro tutorial de código de muestra de JDBC .