3. DEFINICION:
Java Database Connectivity, más conocida por sus siglas JDBC,es una API que permite la ejecución
de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente
del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el
dialecto SQL del modelo de base de datos que se utilice.
El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de
manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de
conexiones hacia un modelo de base de datos en particular es un conjunto de clases que
implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos de
localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos particular,
el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al modelo de su base
de datos, y accede a ella estableciendo una conexión; para ello provee el localizador a la base de
datos y los parámetros de conexión específicos. A partir de allí puede realizar cualquier tipo de tarea
con la base de datos a la que tenga permiso: consulta, actualización, creación, modificación y
borrado de tablas, ejecución de procedimientos en la base de datos, etc.
4. JDBC ofrece el paquete java.sql , en el que existen clases muy útiles para
trabajar con bases de datos.
Clase Descripción
DriverManager Para cargar un driver
Connection Para establecer conexiones con las bases de datos
Statement Para ejecutar sentencias SQL y enviarlas a las BBDD
PreparedStatement
La ruta de ejecución está predeterminada en el servidor
de base de datos que le permite ser ejecutado varias
veces
ResultSet Para almacenar el resultado de la consulta
5. OBJETO CONNECTION
Un objeto Connection se utiliza para representar enlaces de comunicación entre
sistemas CICS. Con el fin de direccionar el trabajo de un sistema CICS a otro, debe
definirse un par de objetos Connection. Cada mitad del par Connection se asocia con
un objeto SystemClone, que es el sistema CICS a partir del cual se define la conexi
6. Atributos de los objetos Connection
Tabla 1. Atributos y valores predeterminados de un objeto Connection
Atributo Valor
predeterminado
Descripción
load 0,1 El factor de ponderación se aplica al
objeto que utiliza esta conexión. El
incremento de este número desviará
el algoritmo WLM del sistema
conectado.
inService 0 Se habilita un conmutador para
especificar si este objeto Connection
se encuentra actualmente habilitado
(1) o no (0). Tenga en cuenta que
ambos objetos Connection deben
estar en servicio (inService) para
posibilitar el direccionamiento entre
ambos sistemas.
7. OBJETO CONNECTION
El objeto Connection representa una conexión HTTP entre la prueba dinámica (el
cliente) y el servidor Web. La prueba abre la conexión, aunque tanto la prueba
como el servidor Web pueden cerrarla. Se pueden enviar múltiples solicitudes
mediante una sola conexión, siempre que esta última permanezca abierta.
Propiedades
8. Propiedad Descripción
IsOpen Comprueba si la conexión está abierta.
Port Obtiene el número del puerto utilizado por la conexión.
RedirectDepth Obtiene o define el número de redirecciones de encabezados
HTTP que se siguen.
Server Obtiene el nombre del host o dirección IP del servidor al que
está conectado el cliente.
UseSSL Comprueba si la conexión HTTP entre el cliente y el servidor
utiliza el protocolo SSL ("https://").
9. MÉTODOS
Método Descripción
Close Cierra la conexión, si está abierta. No devuelve un error si la
conexión ya está cerrada.
Send Envía una solicitud HTTP al servidor.
10. OBJETO CONNECTION (PROPIEDADES Y MÉTODOS)
Hemos comentado que el objeto Connection nos proporciona una conexión a una base de datos desde una
página ASP; ahora vamos a ver como se usa, así como sus propiedades y métodos.
Para establecer la conexión lo primero que hacemos es crear el Objeto Connetion por medio de la propiedad
CreateObject de objeto Server:
<% Set conexion=Server.CreateObject("ADODB.Connection")%>
Una vez establecida la instancia del objeto pasamos a configurarlo mediante sus distintas propiedades y
métodos.
11. PROPIEDADES
ConnectionString
Los valores que podemos asignar son:
Data Source: DSN=Nombre ODBC de la Base de Datos
Usuario: UID=Nombre de Usuario
Password: PWD=Password del usuario para la base de datos
Ejemplo:
<% conexion.ConnectionString="DSN=MIOdbc;UID=pepe;PWD=1234" %>
12. LA CLASE STATEMENT
Un objeto Statement se usa para enviar sentencias SQL a la base de datos. Actualmente hay tres
tipos de objetos Statement, todos los cuales actúan como contenedores para la ejecución de
sentencias en una conexión dada: Statement, PreparedStatement que hereda de Statement y
CallableStatement que hereda de PreparedStatement. Estas estàn especializadas para enviar tipos
particulares de sentencias SQL, Un objeto Statement se usa para ejecutar una sentencia SQL simple
sin parámetros. Un objeto PreparedStatement se usa para ejecutar sentencias SQL precompiladas
con o sin parámetros IN; y un objeto CallableStatement se usa para ejecutar un procedimieno de
base de datos almacenado.
13. Creación de objetos Statement
Una vez establecida la conexión con una base de datos particular, esta conexión puede
usarse para enviar sentencias SQL. Un objeto Statement se crea mediante el método de
Connection createStatement, como podemos ver en el siguiente fragmento de código.
Connection con = DriverManager.getConnection(url, "sunny","");
Statement stmt = con.createStatement();
La sentencia SQL que será enviada a la base de datos es alimentada como un argumento a uno de
los métodos de ejecución del objeto Statement
14. Ejecución de sentencias usando objetos Statement.
La interfase Statement nos suministra tres métodos diferentes para ejecutar sentencias SQL,
executeQuery, executeUpdate y execute. El método a usar está determinado por el producto de la
sentencia SQL
El método executeQuery está diseñado para sentencias que producen como resultado un único result set tal
como las sentencias SELECT.
El método executeUpdate se usa para ejecutar sentencias INSERT, UPDATE ó DELETE así como
sentencias SQL DDL (Data Definition Language) como CREATE TABLE o DROP TABLE. El efecto de una
sentencia INSERT, UPDATE o DELETE es una modificación de una o más columnas en cero o más filas de
una tabla
15. Cerrar objetos Statement.
Los objetos Statement se cerrarán automáticamente por el colector de basura de Java (garbage
collector). No obstante se recomienda como una buena práctica de programación que se cierren
explicitamente cuando no sean ya necesarios. Esto libera recursos DBMS inmediatamente y
ayuda a evitar potenciales problemas de memoria.
Sintaxis de Escape SQL en objetos Statement
Los objetos Statement pueden contener sentencias SQL que usen sintaxis de escape SQL. La sintaxis de
escape señala al driver que el código que lleva debe ser tratado diferentemente. El driver buscará por
cualquier sintaxis de escape y lo traducirá en código que entiende la base de datos en particular
16. LA CLASE RESULTSET
Un ResultSet contiene todas las filas que satisfacen las condiciones de una sentencia SQL y
proporciona el acceso a los datos de estas filas mediante un conjunto de métodos get que permiten
el acceso a las diferentes columnas de la filas. El método ResultSet.next se usa para moverse a la
siguiente fila del result set, convirtiendo a ésta en la fila actúal.
El formato general de un result set es una tabla con cabeceras de columna y los valores correspondientes
devueltos por la ‘query’. Por ejemplo, si la ‘query’ es SELECT a, b, c FROM
17. FILAS Y CURSORES
Un ResultSet mantiene un cursor que apunta a la fila actúal de datos. El cursor se mueve
una fila hacia abajo cada vez que se llama al método next. Incialmente se sitúa antes de la
primera fila, por lo que hay que llamar al método next para situarlo en la primera fila
conviertiendola en la fila actúal. Las filas de ResultSet se recuperan en secuencia desde la
fila más alta a la más baja.
Un cursor se mantiene válido hasta que el objeto Resultset o su objeto padre Statement se cierra.
18. COLUMNAS
Los métodos getXXX suministran los medios para recuperar los valores de las columnas de la fila actúal. Dentro
de cada fila, los valores de las columnas pueden recuperarse en cualquier orden, pero para asegurar la máxima
portabilidad, deberían extraerse las columnas de izquierda a derecha y leer los valores de las columnas una
única vez.
Puede usarse o bien el nombre de la columna o el número de columna para referirse a esta. Por ejemplo: si la
columna segunda de un objeto RecordSet rs se denomina “title” y almacena valores de cadena, cualquiera de
los dos ejemplos siguientes nos devolverá el valor almacenado en la columna.
String s = rs.getString("title");
String s = rs.getString(2);
19. Recuperar datos de ResultSet
El objeto ResultSet proporciona varios métodos para obtener los datos de columna correspondientes a
una fila. Todos ellos tienen el formato get<Tipo>, siendo <Tipo> un tipo de datos Java™. Algunos
ejemplos de estos métodos son getInt, getLong, getString, getTimestamp y getBlob. Casi todos estos
métodos toman un solo parámetro, que es el índice
20. Soporte de ResultSetMetaData
Cuando se llama al método getMetaData en un objeto ResultSet, el método devuelve un objeto
ResultSetMetaData que describe las columnas de ese objeto ResultSet. En los casos en que la
SQL que se va a procesar no se conoce hasta el momento de la ejecución, puede utilizarse
ResultSetMetaData para determinar cuál de los métodos get hay que emplear para recuperar los
El ejemplo de código siguiente utiliza ResultSetMetaData para determinar cada uno de los tipos de
columna del conjunto de resultados.
ResultSet rs = stmt.executeQuery(sqlString);
ResultSetMetaData rsmd = rs.getMetaData();
int colType [] = new int[rsmd.getColumnCount()];
for (int idx = 0, int col = 1; idx < colType.length; idx++, col++)
colType[idx] = rsmd.getColumnType(col);