Professional Documents
Culture Documents
ÍNDICE
1. INTRODUCCIÓN ...................................................................................................................................................... 3
2. ESTRUCTURA DE ACCESO A DATOS JAVA ........................................................................................................ 3
2.1. MODELO DE OBJETOS DENTRO DE JDBC.............................................................................................................................. 4
2.1.1. DriverManager ............................................................................................................................................................................. 4
2.1.2. Conexión ........................................................................................................................................................................................... 4
2.1.3. Sentencias........................................................................................................................................................................................ 5
2.1.4. ResultSet........................................................................................................................................................................................... 6
2.1.5. ResultSetMetaData ..................................................................................................................................................................... 8
2.2. CONFIGURANDO EL ACCESO A DATOS ................................................................................................................................... 8
2.2.1. Ejemplo de consultas de acción .......................................................................................................................................... 10
2.2.2. Ejemplo de consultas de selección .................................................................................................................................... 11
2.2.3. Ejemplo consulta de MetaDatos......................................................................................................................................... 12
2.2.4. Ejemplo consultas parametrizadas.................................................................................................................................. 14
2.2.5. Ejemplo consultas a procedimientos almacenados ................................................................................................. 16
2.2.6. RowSet ............................................................................................................................................................................................ 17
EXPERTO EN JAVA 2
Módulo 2: Unidad 12. JDBC
1. INTRODUCCIÓN
La mayoría de las aplicaciones escritas en Java giran en torno a la lectura y
actualización de información de bases de datos, independientemente del entorno para
el que hayan sido creadas. Para permitir la integración de datos en aplicaciones
distribuidas y escalables, Java utiliza una tecnología de acceso a datos
denominada JDBC
El problema es comunicar un programa o aplicación con una base de datos y, más
que comunicar, pretender que el programa o aplicación realice una serie de procesos
u operaciones con la base de datos.
Existen múltiples formas de comunicarnos y trabajar con acceso a datos, que veremos
en módulos posteriores del curso.
EXPERTO EN JAVA 3
Módulo 2: Unidad 12. JDBC
2.1.1. DriverManager
Es el objeto que será el encargado de registrar el driver en nuestra aplicación. Dicha
clase tiene métodos estáticos que nos permitirán registrar el driver de la base de datos
o nos permitirán poder crear objetos de conexión para acceder a los datos.
Para poder registrar el driver en la aplicación, será necesario que el driver esté en
nuestro proyecto, ya sea con rutas relativas o absolutas.
2.1.2. Conexión
Para poder realizar una conexión, necesitamos un objeto de la clase Connection.
La característica más importante de cualquier conexión es la cadena de acceso a la
base de datos. Dependiendo de la base de datos, la cadena de conexión variará en
función del puerto o nombre de base de datos o usuarios.
Algunos ejemplos de cadenas de conexión a las bases de datos más populares son:
EXPERTO EN JAVA 4
Módulo 2: Unidad 12. JDBC
2.1.3. Sentencias
Las sentencias nos permiten realizar consultas sobre la base de datos, ya sean
consultas de selección o consultas de acción a los registros.
Una sentencia depende de una conexión. Solamente podremos crearnos sentencias
si tenemos un objeto Connection instanciado.
Existen tres tipos de objetos para realizar sentencias:
• Statement: Son consultas simples. No contienen parámetros en las consultas. La
sentencia debe estar escrita en el código.
• PreparedStatement: Sentencia para realizar consultas parametrizadas. Contiene
una serie de métodos para administrar los parámetros de las consultas y ejecutar
las sentencias. La posición de los parámetros de la consulta se realiza por orden
de izquierda a derecha.
• CallableStatement: Objeto sentencia que nos permite llamar a Procedimientos
almacenados o paquetes de la base de datos. Admite parámetros en la llamada.
EXPERTO EN JAVA 5
Módulo 2: Unidad 12. JDBC
2.1.4. ResultSet
El objeto ResultSet sirve para almacenar los registros devueltos por una sentencia en
una consulta de selección.
No se puede instanciar el objeto, la forma de crear un ResultSet es mediante una
sentencia y el método executeQuery().
Un objeto ResultSet es, por defecto, un objeto Forward Only y Read Only, es decir,
solamente podemos recorrerlo hacia una dirección, si deseamos volver a leer un
registro, debemos volver a ejecutar la consulta.
El cursor se mueve una fila hacia abajo cada vez que se llama al método next().
Inicialmente se sitúa antes de la primera fila, por lo que hay que llamar al método next
para situarlo en la primera fila, convirtiéndola en la fila actual. Las filas del ResultSet
se recuperan en secuencia desde la fila más alta a la más baja, hasta que el método
next devuelve false.
Los métodos de posicionamiento del ResultSet propagan una excepción
SQLException.
• next(): Posiciona el cursor en la línea siguiente a partir de la línea actual. Devuelve
true si el cursor se ha podido situar en una fila y false si se ha posicionado después
de la última fila o si no hay filas para leer.
EXPERTO EN JAVA 6
Módulo 2: Unidad 12. JDBC
Dentro del ResultSet podemos recuperar datos de la consulta Select enviada. Los
datos se recuperan mediante métodos GET, una vez que el cursor se ha posicionado
en una fila determinada.
Podemos recuperar el dato a partir del nombre de la columna o a partir del índice de
la columna, sabiendo que el primer índice de la columna de una consulta es 1.
Existe un método get para cada tipo de dato. Su sintaxis sería getTipoDato(), es decir,
getString(), getBoolean(), getInt(), getDouble()…
Un objeto ResultSet no verifica el valor del dato que recupera, si puede convertirlo,
realizará la conversión de forma automática, es decir, si recuperamos una columna de
tipo Date con el método getString(), se convierte el dato recuperado a la clase String.
EXPERTO EN JAVA 7
Módulo 2: Unidad 12. JDBC
2.1.5. ResultSetMetaData
Es una clase que nos permite acceder a la información de las columnas de una
consulta Select. Entre la información que podemos extraer del objeto podemos
destacar el nombre de las columnas, el tipo de dato de las columnas o el número de
columnas de una consulta.
La forma de instanciar un objeto ResultSetMetaData es mediante un objeto ResultSet
y su método getResultSetMetaData().
Los métodos más importantes de la clase son:
• getColumnCount(): Devuelve el número de columnas de la consulta de
una sentencia.
• getColumnName(indice): Devuelve el nombre de la columna que corresponde con
un índice, comenzando dicho índice en 1.
• getColumnTypeName(índice): Devuelve un String que representa el tipo de dato
de una columna que corresponde con el índice indicado.
EXPERTO EN JAVA 8
Módulo 2: Unidad 12. JDBC
Una vez que hemos copiado el driver, debemos irnos al IDE de NetBeans y agregar a
nuestro proyecto el archivo jar.
En nuestro proyecto, sobre la carpeta Libraries, seleccionamos la opción Add
JAR/Folder.
EXPERTO EN JAVA 9
Módulo 2: Unidad 12. JDBC
EXPERTO EN JAVA 10
Módulo 2: Unidad 12. JDBC
Y el resultado es:
EXPERTO EN JAVA 11
Módulo 2: Unidad 12. JDBC
EXPERTO EN JAVA 12
Módulo 2: Unidad 12. JDBC
EXPERTO EN JAVA 13
Módulo 2: Unidad 12. JDBC
EXPERTO EN JAVA 14
Módulo 2: Unidad 12. JDBC
EXPERTO EN JAVA 15
Módulo 2: Unidad 12. JDBC
EXPERTO EN JAVA 16
Módulo 2: Unidad 12. JDBC
Y el resultado será:
Nota: Aunque ponga que los salarios incrementados han sido 0, el procedimiento ha
podido modificar filas. Los procedimientos almacenados en la base de datos Oracle
Express no devuelven el conjunto de resultados afectados por la consulta de acción.
2.2.6. RowSet
Son elementos desconectados dentro de la tecnología JDBC.
La nueva API hereda de ResultSet y Connection, un RowSet contiene una mezcla de
los dos, administra las conexiones y las sentencias en un único objeto.
Su funcionalidad está en las consultas de selección, aunque también puede realizar
consultas de acción.
El objeto ROWSET es la interfaz que hereda del ResultSet.
EXPERTO EN JAVA 17
Módulo 2: Unidad 12. JDBC
Para establecer la conexión con la base de datos para ejecutar consultas se realiza
de la siguiente forma:
EXPERTO EN JAVA 18
Módulo 2: Unidad 12. JDBC
EXPERTO EN JAVA 19
Módulo 2: Unidad 12. JDBC
EXPERTO EN JAVA 20