JDBC: Conectividad Java a Bases de Datos

Clasificado en Informática

Escrito el en español con un tamaño de 5,17 KB

¿Qué es JDBC?

JDBC (Java DataBase Connectivity = conectividad Java a bases de datos) es un conjunto de clases e interfaces escritos en Java que ofrecen una API completa para la programación de bases de datos de diferentes proveedores (Microsoft SQL Server, Oracle, MySQL, Interbase, Microsoft Access, IBM DB2, PostgreSQL, etc.) usando instrucciones SQL (Structured Query Language = Lenguaje estructurado de consultas).

JDBC realiza varias funciones:

  1. Conecta con la base de datos (BD en adelante); la BD puede ser local (en nuestro PC) o remota (en otro PC).
  2. Envía las sentencias SQL.
  3. Manipula los registros de la BD.
  4. Recoge el resultado de la ejecución de las sentencias SQL.

JDBC vs ODBC

JDBC difiere de ODBC (Open DataBase Connectivity = conectividad abierta a bases de datos), API de Microsoft muy utilizada para acceder a BD de diferentes proveedores desde múltiples plataformas:

  1. ODBC está escrito en C.
  2. El gestor de drivers ODBC y el propio driver han de ser instalados en todos los ordenadores.
  3. JDBC está escrito en Java y permite obtener aplicaciones completas en Java (100% pure Java).
  4. Usando ODBC en BD grandes, el rendimiento puede disminuir al convertir llamadas Java a C y viceversa.

Clases y métodos de JDBC

JDBC utiliza los mismos métodos y clases independientemente del driver usado para conectar al proveedor de BD, lo que cambia es el nombre del driver por lo que es bastante sencillo modificar aplicaciones al cambiar de proveedor. El código genérico de conexión a una BD es:

  • Registrar el driver JDBC usando el cargador de clases Class.forName:
Class.forName ("nombre_del_driver");
  • Conectar a la BD usando la interfaz Connection que abre una sesión o conexión con la BD especificada y, mediante el método DriverManager.getConnection, intenta seleccionar el driver apropiado de entre los que JDBC tenga registrados en el sistema:
Connection con = DriverManager.getConnection ("BD_url", "usuario", "password");
  • Ejecutar sentencias SQL; la interfaz Statement permite ejecutar las instrucciones SQL y devolver el resultado generado:
Statement select = con.createStatement();
  • La interfaz ResultSet representa un conjunto de datos resultado de una consulta SQL, para acceder a los registros se emplea un cursor que inicialmente apunta antes del primer registro y para avanzar por los registros se emplea el metodo ResultSet.next(). ResultSet es de sólo lectura:
ResultSet nombres = select.executeQuery ("SELECT * FROM Tabla ORDER BY Id");

Las consultas Statement tienen métodos diferentes según el tipo de instrucción SQL empleada:

  • executeQuery(String sql): devuelve un objeto ResultSet
  • executeUpdate(String sql): ejecuta una instruccion de tipo INSERT, UPDATE o DELETE
  • JDBC puede usar varios drivers, entre ellos los más importantes son:
  • Microsoft SQL Server (se descarga desde la web de Microsoft, es un controlador JDBC de SQL Server 2005 y de SQL Server 2000; se trata de un controlador JDBC de Tipo 4 que proporciona conectividad de base de datos a través de las API JDBC estándar disponibles en J2EE - Java2 Enterprise Edition:
Class.forName: com.microsoft.jdbc.sqlserver.SQLServerDriver
Connection: <a href="jdbc:microsoft:sqlserver://<HOST>:<puerto>;DatabaseName=[nombre_BD];User=[usuario];Password=[password]">jdbc:microsoft:sqlserver://<HOST>:<puerto>;DatabaseName=[nombre_BD];User=[usuario];Password=[password]</a>
  • JDBC-ODBC Bridge (puente con ODBC, sirve para conectar con BD de Microsoft Access):
Class.forName: sun.jdbc.odbc.JdbcOdbcDriver
Connection: jdbc:odbc:<ruta_a_la_BD>

La conexión con la BD de Microsoft Access puede realizarse de 2 maneras:

  • configurando la BD como DSN de Sistema en el Panel de control ODBC
/* cadena de conexion: AccessBD es el nombre con el que se ha configurado
* la conexion a la BD en el panel de control ODBC */
String url = "jdbc:odbc:AccessBD";
  • usando la ruta física a la BD en la cadena de conexión (no hace falta configurarla en el Panel de control ODBC):
// cadena de conexion con la ruta fisica a la BD
String db = "D:\\Carpeta\\Subcarpeta\\Subcarpeta\\base_de_datos.mdb";
// si la BD esta en la carpeta de la aplicacion Java se escribe
//String db = "base_de_datos.mdb";
String url = "jdbc:odbc:MS Access Database;DBQ=" + db;
  • MySQL (driver MM.MySQL):
Class.forName: org.gjt.mm.mysql.Driver
Connection: <a href="jdbc:mysql://<HOST>:<puerto>/<BD>">jdbc:mysql://<HOST>:<puerto>/<BD></a>

Entradas relacionadas: