Conexión a Bases de Datos Java: Tipos de Drivers JDBC y Desarrollo de Aplicaciones
Clasificado en Informática
Escrito el en español con un tamaño de 4,96 KB
Tipos de Controladores JDBC
Existen cuatro tipos diferentes de controladores o drivers JDBC definidos en la especificación JDBC de Sun:
Tipo 1: Controlador Puente JDBC-ODBC
Los controladores de este tipo utilizan el sistema de pasarela (bridge) JDBC-ODBC. No es la solución óptima, ya que en muchos casos requiere la instalación de software específico en el cliente y es lento en el acceso a la base de datos.
Tipo 2: Controlador de API Nativa
Este tipo de controlador se conoce como API nativa. El controlador contiene código Java mediante el cual se realizan las llamadas a los métodos nativos de la base de datos en C o C++ que ejecutan el acceso a la base de datos. En ocasiones, es necesario instalar software cliente para utilizar este tipo de controladores.
Tipo 3: Controlador de Red (Middleware)
Los drivers JDBC de este tipo se comunican con una aplicación intermedia en el servidor utilizando sockets que trasladan las peticiones del programa cliente a una API específica del controlador. La principal ventaja de este tipo de driver es que no requiere software en el cliente.
Tipo 4: Controlador Nativo de Protocolo de Red
Los drivers de este tipo utilizan protocolos de red que están incluidos en el SGBD (Sistema de Gestión de Bases de Datos). Por lo tanto, los drivers se comunican de forma directa con la base de datos, utilizando también sockets de Java. Es considerado el mejor de los cuatro tipos de drivers, ya que está escrito completamente en Java. La mayoría de estos controladores son provistos por el fabricante del SGBD.
Desarrollo de Aplicaciones con la API JDBC
Una de las ventajas de utilizar una API JDBC es que todas sus funciones son estandarizadas, independientemente de la base de datos a utilizar. Esto permite programar una vez para cualquier manejador de base de datos, facilitando la portabilidad de una aplicación desarrollada para MySQL a un servidor de producción con un motor de base de datos más potente, como SQL Server o PostgreSQL.
Cargar el Controlador JDBC
El primer paso es conectar nuestro programa Java con el servidor donde está situada nuestra base de datos. En muchas ocasiones, se necesitarán un nombre de usuario y contraseña para poder acceder a la base de datos.
Cuando se utiliza Tomcat para la conexión con la base de datos, es necesario que el driver JDBC (que puede ser un archivo .jar
o .class
) se incluya en el CLASSPATH del entorno. En este caso, ese archivo debe copiarse a la carpeta lib
, dentro de la carpeta donde está instalado el intérprete de páginas JSP. Por ejemplo, el API JDBC de MySQL se encuentra en el archivo mysql-connector-java-3.0.9-stable-bin.jar
.
Una vez creada la conexión a la base de datos, podemos crear sentencias o ejecutar consultas desde nuestro programa Java para interactuar con la base de datos. Podemos crear consultas que modifiquen la base de datos sin devolver ningún resultado, por ejemplo: INSERT, ALTER, DELETE, CREATE, DROP, o UPDATE.
El código en cuestión debe presentar una estructura similar a esta:
Statement stmt;
stmt = con.createStatement();
stmt.executeUpdate("INSERT INTO interes (interes_nombre,interes_url," + "interes_tipo) VALUES ('" + args[0] + "', '" +args[1] + "', '" + args[2] +"')");
El método createStatement()
crea un canal abierto a través del cual se pueden ejecutar consultas.
Ejecutar una Consulta con el Objeto Statement - Método executeUpdate()
El método executeUpdate()
es el que realmente ejecuta la consulta en la base de datos, mientras que el método close()
permite liberar los recursos asignados a la conexión abierta.
El ejemplo a continuación inserta tuplas en una tabla llamada interes perteneciente a la base de datos ligas.
Ejecutar una Consulta con el Objeto Statement - Método executeQuery()
Las consultas de recuperación de tuplas o registros se ejecutan con el método executeQuery()
. Este método devuelve un objeto ResultSet
, el cual puede usarse para acceder a cada uno de los registros devueltos:
Connection conn= null;
Statement stmt = null;
ResultSet rs =null;