1060

Capítulo 25 Acceso a bases de datos con JDBC

Figura 25.24

  |  Formatos populares de URL de base de datos.

En las líneas 30 y 31 de la fi gura 25.23 se crea un objeto 

Connection

 (paquete 

java.sql

), el cual es refe-

renciado mediante 

conexion

. Un objeto que implementa a la interfaz 

Connection

 administra la conexión entre 

el programa de Java y la base de datos. Los objetos 

Connection

 permiten a los programas crear instrucciones de 

SQL para manipular bases de datos. El programa inicializa a 

conexion

con el resultado de una llamada al método 

staticgetConnection

 de la clase 

DriverManager

 (paquete 

java.sql

), el cual trata de conectarse a la base de 

datos especifi cada mediante su URL. El método 

getConnection

recibe tres argumentos: un objeto 

String

que 

especifi ca el URL de la base de datos, un objeto 

String

que especifi ca el nombre de usuario y un objeto 

String

que especifi ca la contraseña. El nombre de usuario y la contraseña se establecen en la sección 25.6. Si utilizó un 
nombre de usuario y contraseña distintos, necesita reemplazar el nombre de usuario (segundo argumento) y la 
contraseña (tercer argumento) que se pasan al método 

getConnection

 en la línea 31. El URL localiza la base de 

datos (posiblemente en una red o en el sistema de archivos local de la computadora). El URL 

jdbc:mysql://

localhost/libros

 especifi ca el protocolo para la comunicación (

jdbc

), el 

subprotocolo

 para la comunicación 

(

mysql

) y la ubicación de la base de datos (

//localhost/libros

, en donde 

localhost

 es el host que ejecuta el 

servidor MySQL y 

libros

 es el nombre de la base de datos). El subprotocolo 

mysql

 indica que el programa utili-

za un subprotocolo específi co de MySQL para conectarse a la base de datos MySQL. Si el objeto 

DriverManager

 

no se puede conectar a la base de datos, el método 

getConnection

 lanza una excepción 

SQLException

 (paquete 

java.sql

). En la fi gura 25.24 se enlistan los nombres de los controladores de JDBC y los formatos de URL de 

base de datos de varios RDBMSs populares.

Observación de ingeniería de software 25.5

La mayoría de los sistemas de administración de bases de datos requieren que el usuario inicie sesión para poder 
administrar el contenido de la base de datos. El método 

getConnection

 de 

DriverManager

 está sobrecargado con 

versiones que permiten al programa proporcionar el nombre de usuario y la contraseña para obtener acceso.

En la línea 34 se invoca el método 

createStatement

 de 

Connection

 para obtener un objeto que implemen-

te a la interfaz 

Statement

 (paquete 

java.sql

). El programa utiliza al objeto 

Statement

 para enviar instrucciones 

de SQL a la base de datos.

En las líneas 37 y 38 se utiliza el método 

executeQuery

del objeto 

Statement

 para enviar una consulta que 

seleccione toda la información sobre los autores en la tabla 

autores

. Este método devuelve un objeto que imple-

menta a la interfaz 

ResultSet

, y contiene el resultado de esta consulta. Los métodos de 

ResultSet

 permiten al 

programa manipular el resultado de la consulta.

En las líneas 41 a 54 se procesa el objeto 

ResultSet

. En la línea 41 se obtienen los metadatos para el objeto 

ResultSet

en forma de un objeto 

ResultSetMetaData

(paquete 

java.sql

). Los 

metadatos

 describen el con-

tenido del objeto 

ResultSet

. Los programas pueden usar metadatos mediante la programación, para obtener 

información acerca de los nombres y tipos de las columnas del objeto 

ResultSet

. En la línea 42 se utiliza el méto-

do 

ResultSetMetaData

 de 

getColumnCount

 para obtener el número de columnas para el objeto 

ResultSet

. En 

las líneas 45 y 46 se anexan los nombres de las columnas.

RDBMS

Formato de URL de base de datos

MySQL

jdbc:mysql

:

//nombrehost:numeroPuerto/nombreBaseDatos

ORACLE

jdbc:oracle:thin

:@

nombrehost:numeroPuerto:nombreBaseDatos

DB2

jdbc:db2

:

nombrehost:numeroPuerto/nombreBaseDatos

Java DB/Apache
Derby

jdbc:derby

:

nombreBaseDatos (incrustado)

jdbc:derby

:

//nombrehost:numeroPuerto/nombreBaseDatos (red)

Microsoft SQL
Server

jdbc:sqlserver

:

//nombrehost.numeroPuerto;nombreBaseDatos=nombreBaseDatos

Sybase

jdbc:sybase:

Tds:

nombrehost:numeroPuerto/nombreBaseDatos

25_MAQ_CAP_25_DEITEL.indd1060

4/19/081:35:49AM