Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Conexión a una base de datos relacional con Java, Esquemas y mapas conceptuales de Dinámica

Este documento proporciona una introducción a la conexión de bases de datos relacionales con java utilizando jdbc. Se explica el concepto de bases de datos relacionales, el lenguaje sql y la forma de realizar consultas, actualizaciones y eliminaciones de datos. Se incluyen ejemplos de código para conectar a una base de datos mysql y visualizar los resultados en un objeto jtable.

Tipo: Esquemas y mapas conceptuales

2023/2024

Subido el 25/10/2024

milagro
milagro 🇪🇸

4.5

(116)

626 documentos

1 / 11

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Conexión a una base de datos
relacional con Java
Conectando una base de datos
Una base de datos es una colección organizada de datos. Existen diversas
estrategias para organizar datos y facilitar el acceso y la manipulación. Un
sistema de administración de bases de datos (DBMS) proporciona los
mecanismos para almacenar, organizar, obtener y modificar datos para
muchos usuarios. Los sistemas de administración de bases de datos
permiten el acceso y almacenamiento de datos sin necesidad de preocuparse
por su representación interna.
En la actualidad, los sistemas de bases de datos más populares son las bases
de datos relacionales, en donde los datos se almacenan sin considerar su
estructura física. Un lenguaje llamado SQL es el lenguaje estándar
internacional que se utiliza casi universalmente con las bases de datos
relacionales para realizar consultas (es decir, para solicitar información que
satisfaga ciertos criterios) y para manipular datos. Algunos sistemas de
administración de bases de datos relacionales (RDBMS) populares son
Microsoft SQL Server, Oracle, Sybase, PostgreSQL y MySQL (MariaDB).
Base de datos relacional
Una base de datos relacional es una representación lógica de datos que
permite acceder a éstos sin necesidad de considerar su estructura física.
Una base de datos relacional almacena los datos en tablas. Las tablas están
compuestas de filas, y las filas, de columnas en las que se almacenan los
valores. Una columna de cada fila en una tabla normlamente se define como
su clave primaria: una columna (o grupo de columnas) en una tabla que
tiene un valor único, el cual no puede duplicarse en las demás filas. Esto
garantiza que cada fila pueda identificarse por su clave primaria.
Algunos buenos ejemplos de columnas con clave primaria son un número de
IDl, un número de identificación de empleado y un número de pieza en un
sistema de inventario, ya que se garantiza que los valores en cada una de
esas columnas serán únicos. No se garantiza que las filas en las tablas se
almacenen en un orden específico. Los programas pueden especificar
criterios de ordenamiento al solicitar datos de una base de datos. Cada
columna de la tabla representa un atributo de datos distinto. Las filas
generalmente son únicas (por clave primaria) dentro de una tabla, pero los
valores de columnas específicas pueden duplicarse entre filas.
A menudo los distintos usuarios de una base de datos se interesan en datos
diferentes, y en relaciones distintas entre esos datos. La mayoría de los
usuarios requieren solamente de ciertos subconjuntos de las filas y
columnas. Para obtener estos subconjuntos, utilizamos consultas para
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Conexión a una base de datos relacional con Java y más Esquemas y mapas conceptuales en PDF de Dinámica solo en Docsity!

Conexión a una base de datos

relacional con Java

Conectando una base de datos

Una base de datos es una colección organizada de datos. Existen diversas estrategias para organizar datos y facilitar el acceso y la manipulación. Un sistema de administración de bases de datos (DBMS) proporciona los mecanismos para almacenar, organizar, obtener y modificar datos para muchos usuarios. Los sistemas de administración de bases de datos permiten el acceso y almacenamiento de datos sin necesidad de preocuparse por su representación interna.

En la actualidad, los sistemas de bases de datos más populares son las bases de datos relacionales, en donde los datos se almacenan sin considerar su estructura física. Un lenguaje llamado SQL es el lenguaje estándar internacional que se utiliza casi universalmente con las bases de datos relacionales para realizar consultas (es decir, para solicitar información que satisfaga ciertos criterios) y para manipular datos. Algunos sistemas de administración de bases de datos relacionales (RDBMS) populares son Microsoft SQL Server, Oracle, Sybase, PostgreSQL y MySQL (MariaDB).

Base de datos relacional

Una base de datos relacional es una representación lógica de datos que permite acceder a éstos sin necesidad de considerar su estructura física. Una base de datos relacional almacena los datos en tablas. Las tablas están compuestas de filas, y las filas, de columnas en las que se almacenan los valores. Una columna de cada fila en una tabla normlamente se define como su clave primaria: una columna (o grupo de columnas) en una tabla que tiene un valor único, el cual no puede duplicarse en las demás filas. Esto garantiza que cada fila pueda identificarse por su clave primaria.

Algunos buenos ejemplos de columnas con clave primaria son un número de IDl, un número de identificación de empleado y un número de pieza en un sistema de inventario, ya que se garantiza que los valores en cada una de esas columnas serán únicos. No se garantiza que las filas en las tablas se almacenen en un orden específico. Los programas pueden especificar criterios de ordenamiento al solicitar datos de una base de datos. Cada columna de la tabla representa un atributo de datos distinto. Las filas generalmente son únicas (por clave primaria) dentro de una tabla, pero los valores de columnas específicas pueden duplicarse entre filas.

A menudo los distintos usuarios de una base de datos se interesan en datos diferentes, y en relaciones distintas entre esos datos. La mayoría de los usuarios requieren solamente de ciertos subconjuntos de las filas y columnas. Para obtener estos subconjuntos, utilizamos consultas para

especificar cuáles datos se deben seleccionar de una tabla. Utilizamos SQL para definir consultas complejas que seleccionen datos de una tabla.

SQL

| Palabra clave | Descripción | | --- | --- | | SELECT | Obtiene datos de una o más tablas. | | FROM | Indica las tablas involucradas en la consulta. Se requiere para cada SELECT. | | WHERE | Los criterios de selección que determinan cuáles filas se van a recuperar, eliminar o actualizar. Es opcional en una consulta o instrucción de SQL. | | GROUP BY | Criterios para agrupar filas. Es opcional en una consulta SELECT. | | ORDER BY | Criterios para ordenar filas. Es opcional en una consulta SELECT. | | INNER JOIN | Fusionar filas de varias tablas. | | INSERT | Insertar filas en una tabla especificada. | | UPDATE | Actualizar filas en una tabla especificada. | | DELETE | Eliminar filas de una tabla especificada. |

Consulta – SELECT

Una consulta de SQL "selecciona" filas y columnas de una o más tablas en una base de datos. Dichas selecciones se llevan a cabo mediante consultas con la palabra clave SELECT. La forma básica de una consulta SELECT es:

sql SELECT * FROM nombreDeTabla

En la consulta anterior, el asterisco (*) indica que deben obtenerse todas las columnas de la tabla nombreDeTabla. Por ejemplo, para obtener todos los datos en la tabla autores, podemos utilizar la siguiente consulta:

sql SELECT * FROM autores

La mayoría de los programas no requieren todos los datos en la tabla. Para obtener sólo ciertas columnas de una tabla, reemplazamos el asterisco (*) con una lista separada por comas de los nombres de las columnas. Por ejemplo, para obtener solamente las columnas idAutor y apellido para todas las filas en la tabla autores, utilice la siguiente consulta:

sql SELECT idAutor, apellido FROM autores

WHERE

En la mayoría de los casos es necesario localizar, en una base de datos, filas que cumplan con ciertos criterios de selección. Sólo se seleccionan las filas que cumplan con los criterios de selección (formalmente llamados predicados). SQL utiliza la cláusula WHERE opcional en una consulta para especificar los criterios de selección para la misma. La forma básica de una consulta con criterios de selección es:

sql SELECT nomColumna1, nomColumna2, FROM Tabla WHERE criterios

Por ejemplo, para seleccionar las columnas título, ed y copyright de la tabla títulos para las cuales la fecha de copyright sea mayor que 2005, utilizamos la siguiente consulta:

sql ORDER BY columna1 tipoDeOrden, columna2 tipoDeOrden,...

...en donde tipoDeOrden puede ser ASC o DESC. Observemos que el tipoDeOrden no tiene que ser idéntico para cada columna. La consulta:

sql SELECT idAutor, nombre, apellido FROM autores ORDER BY apellido, nombre

...ordena en forma ascendente todas las filas por apellido, y después por nombre de pila. Si varias filas tienen el mismo valor de apellido, se devuelven ordenadas por nombre de pila.

Las cláusulas WHERE y ORDER BY pueden combinarse en una consulta. Por ejemplo, la consulta:

sql SELECT isbn, titulo, numeroEdicion, copyright, precio FROM titulos WHERE título LIKE '%How to Program' ORDER BY título ASC

...devuelve el isbn, titulo, numeroEdicion, copyright y precio de cada libro en la tabla títulos que tenga un título que termine con 'How to Program' y los ordena en forma ascendente, por título.

INNER JOIN

Los diseñadores de bases de datos a menudo dividen los datos en tablas separadas para asegurarse de no guardar información redundante. Por ejemplo, la base de datos libros tiene las tablas autores y títulos. Utilizamos una tabla isbnAutor para almacenar los datos de la relación entre los autores y sus correspondientes títulos. Si no separáramos esta información en tablas individuales, tendríamos que incluir la información del autor con cada entrada en la tabla títulos. Esto implicaría almacenar información duplicada sobre los autores en la base de datos, para quienes hayan escrito varios libros.

A menudo es necesario fusionar datos de varias tablas en un solo resultado. Este proceso, que se le conoce como unir las tablas, se especifica mediante un operador INNER JOIN en la consulta. Un operador INNER JOIN fusiona las filas de dos tablas al relacionar los valores en columnas que sean comunes para las dos tablas. La forma básica de un INNER JOIN es:

sql SELECT nombreDeColumna1 nombreDeColumna2,... FROM tabla INNER JOIN tabla2 ON tabla1.nombreDeColumna = tabla2.nombreDeColumna

La cláusula ON de INNER JOIN especifica las columnas de cada tabla que se comparan para determinar cuáles filas se fusionan. Por ejemplo, la siguiente consulta produce una lista de autores acompañada por los ISBNs para los libros escritos por cada autor.

sql SELECT nombre, apellido, isbn FROM autores INNER JOIN isbnAutor ON autores.idAutor = isbnAutor.idAutor ORDER BY apellido, nombre

La consulta fusiona los datos de las columnas nombre y apellido de la tabla autores con la columna isbn de la tabla isbnAutor, ordenando el resultado en forma ascendente por apellido y nombre. Observemos el uso de la sintaxis nombreDeTabla.nombreDeColumna en la cláusula ON. Esta sintaxis (a la que se le conoce como nombre calificado) especifica las columnas de cada tabla que deben compararse para unir las tablas. La sintaxis "nombreDeTabla. " es requerida si las columnas tienen el mismo nombre en ambas tablas. La misma sintaxis puede utilizarse en cualquier consulta para diferenciar entre columnas de tablas distintas que tengan el mismo nombre. En algunos sistemas pueden utilizarse nombres de tablas calificados con el nombre de la base de datos para realizar consultas entre varias bases de datos. Como siempre, la consulta puede contener una cláusula ORDER BY.

INSERT

La instrucción INSERT inserta una fila en una tabla. La forma básica de esta instrucción es:

sql INSERT INTO nombreDeTabla ( nombreDeColumna1, nombreDeColumna2, ..., nombreDeColumnaN ) VALUES ( valor1, valor2, ..., valorN )

...en donde nombreDeTabla es la tabla en la que se va a insertar la fila. El nombreDeTabla va seguido de una lista separada por comas de nombres de columnas entre paréntesis (esta lista no es requerida si la operación INSERT especifica un valor para cada columna de la tabla en el orden correcto). La lista de nombres de columnas va seguida por la palabra clave VALUES de SQL, y una lista separada por comas de valores entre paréntesis. Los valores especificados aquí deben coincidir con las columnas especificadas después del nombre de la tabla, tanto en orden como en tipo (por ejemplo, si nombreDeColumna1 se supone que debe ser la columna nombre, entonces valor1 debe ser una cadena entre comillas sencillas que represente el nombre de pila).

Siempre debemos enlistar explícitamente las columnas al insertar filas. Si el orden de las columnas cambia en la tabla, al utilizar solamente VALUES se puede provocar un error. La instrucción INSERT:

sql INSERT INTO autores ( nombre, apellido ) VALUES ( 'Alejandra', 'Villarreal' )

...inserta una fila en la tabla autores. La instrucción indica que se proporcionan valores para las columnas nombre y apellido. Los valores correspondientes son 'Alejandra' y 'Villarreal'. No especificamos un idAutor en este ejemplo, ya que idAutor es una columna autoincrementada en la tabla autores. Para cada fila que se agrega a esta tabla, MySQL asigna un valor de idAutor único que es el siguiente valor en la secuencia autoincrementada (por ejemplo: 1, 2, 3 y así sucesivamente). Si la tabla tuviera ya 4 entradas de autores y nos basamos en base 1, Alejandra Villarreal recibiría el número 5 para idAutor.

Esta instrucción elimina todas las filas de la tabla autores donde el apellido sea 'Garcia'.

Si se conoce el idAutor de antemano, la cláusula WHERE se puede simplificar:

WHERE idAutor = 5

De esta forma, solo se eliminará a uno de los 'Garcia', y no a todos.

Manipulación de datos en MySQL con JDBC

Antes de iniciar, se debe instalar y configurar MySQL en el sistema operativo.

El siguiente ejemplo realiza una consulta simple en la base de datos libros para obtener toda la tabla autores y mostrar los datos.

Conexión a la base de datos

Se importan las interfaces y clases de JDBC necesarias. Se declaran constantes para el controlador de la base de datos y la URL de la base de datos. En el método main, se realiza la conexión a la base de datos libros utilizando el método DriverManager.getConnection(). Se crea un objeto Statement para enviar instrucciones SQL a la base de datos. Se ejecuta la consulta SELECT IDAutor, nombre, apellido FROM autores utilizando el método executeQuery() del objeto Statement. Se obtienen los metadatos del objeto ResultSet utilizando ResultSetMetaData. Se recorre el objeto ResultSet y se muestran los datos de cada fila. Finalmente, se cierran los objetos ResultSet, Statement y Connection.

Controladores JDBC y formatos de URL

En la siguiente tabla se enlistan los nombres de los controladores de JDBC y los formatos de URL de base de datos de varios RDBMS populares:

| RDBMS | Formato URL | | --- | --- | | MySQL | jdbc:mysql:// nombrehost:numeroPuerto/nombreBaseDatos | | Oracle | jdbc:oracle:thin:@nombrehost:numeroPuerto:nombreBaseDatos | | DB2 | jdbc:db2:nombrehost:numeroPuerto/nombreBaseDatos | | Java DB | jdbc:derby://nombrehost:numeroPuerto/nombreBaseDatos | | MS SQL Server | jdbc:sqlserver:// nombrehost.numeroPuerto;nombreBaseDatos=nombreBaseDatos | | Sybase | jdbc:sybase:Tds:nombrehost:numeroPuerto/nombreBaseDatos |

Ejemplo de consulta con JTable

Se presenta un ejemplo que permite al usuario introducir cualquier consulta en el programa y muestra el resultado en un objeto JTable, utilizando un

objeto TableModel para proporcionar los datos del objeto ResultSet al objeto JTable.

La clase ResultSetTableModel extiende a AbstractTableModel e implementa los métodos necesarios para proporcionar los datos del ResultSet al JTable.

Elaboración del texto en español con formato

Markdown

Clase ResultSetTableModel

El constructor de ResultSetTableModel acepta cinco argumentos de tipo String: el nombre del controlador de MySQL, la URL de la base de datos, el nombre de usuario, la contraseña y la consulta predeterminada a realizar. El constructor lanza cualquier excepción que ocurra en su cuerpo, de vuelta a la aplicación que creó el objeto ResultSetTableModel, para que la aplicación pueda determinar cómo manejar esa excepción (por ejemplo, reportar un error y terminar la aplicación).

Se invoca el método createStatement de Connection para obtener un objeto Statement. En este ejemplo se utiliza una versión del método createStatement que recibe dos argumentos: el tipo de conjunto de resultados y la concurrencia del conjunto de resultados. El tipo de conjunto de resultados especifica si el cursor del objeto ResultSet puede desplazarse en ambas direcciones o solamente hacia delante, y si el objeto ResultSet es susceptible a los cambios. Los objetos ResultSet que son susceptibles a los cambios los reflejan inmediatamente después de que éstos se realizan con los métodos de la interfaz ResultSet. Si un objeto ResultSet no es susceptible a los cambios, la consulta que produjo ese objeto ResultSet debe ejecutarse de nuevo para reflejar cualquier cambio realizado. La concurrencia del conjunto de resultados especifica si el objeto ResultSet puede actualizarse con los métodos de actualización de ResultSet. En este ejemplo se utiliza un objeto ResultSet que puede desplazarse, que no es susceptible a los cambios y es de sólo lectura.

Se invoca el método establecerConsulta de ResultSetTableModel para ejecutar la consulta predeterminada.

Métodos de la clase ResultSetTableModel

getColumnClass

Este método devuelve un objeto Class que representa a la superclase de todos los objetos en una columna específica. El objeto JTable utiliza esta información para configurar el desplegador de celdas y el editor de celdas predeterminados para esa columna en el objeto JTable. Se utiliza el método getColumnClassName de ResultSetMetaData para obtener el nombre de clase completamente calificado para la columna especificada.

desconectarDeBaseDatos

Este método implementa un método de terminación apropiado para la clase ResultSetTableModel. Un diseñador de clases debe proporcionar un método public que los clientes de la clase deban invocar en forma explícita para liberar los recursos que haya utilizado un objeto. En este caso, el método desconectarDeBaseDatos cierra los objetos ResultSet, Statement y Connection, los cuales se consideran recursos limitados. Los clientes de la clase ResultSetTableModel deben siempre invocar a este método cuando la instancia de esta clase ya no se necesite. Antes de liberar los recursos, se verifica si la conexión ya está terminada. De no ser así, el método continúa. Observe que cada uno de los otros métodos en la clase lanzan una excepción IllegalStateException si el campo booleano conectadoABaseDatos es false. El método desconectarDeBaseDatos establece a conectadoABaseDatos en false para asegurarse que los clientes no utilicen una instancia de ResultSetTableModel después de que ésta haya sido eliminada. IllegalStateExcepcion es una excepción de las bibliotecas de Java que es apropiada para indicar esta condición de error.

Clase MostrarResultadosConsulta

Esta clase implementa la GUI de la aplicación e interactúa con el objeto ResultSetTableModel a través de un objeto JTable. Esta aplicación también demuestra las nuevas herramientas de ordenamiento y filtrado de JTable, que se introdujeron en Java SE 6.

Visualización de los resultados de la consulta

Creación del objeto ResultSetTableModel y la interfaz

gráfica

La clase MostrarResultadosConsulta se encarga de crear un objeto ResultSetTableModel y una interfaz gráfica de usuario (GUI) para visualizar los resultados de una consulta a una base de datos.

En el constructor de la clase, se realizan las siguientes tareas:

Se crea un objeto ResultSetTableModel utilizando los parámetros CONTROLADOR, URL_BASEDATOS, NOMBREUSUARIO, CONTRASENIA y CONSULTA_PREDETERMINADA. Se crea un objeto JTextArea llamado areaConsulta que permite al usuario escribir las consultas. Se crea un objeto JButton llamado botonEnviar para enviar las consultas. Se crea un objeto Box llamado boxNorte para manejar la colocación de areaConsulta y botonEnviar en la GUI. Se crea un objeto JTable llamado tablaResultados que utiliza el modeloTabla creado anteriormente. Se crea un objeto JLabel llamado etiquetaFiltro, un objeto JTextField llamado textoFiltro y un objeto JButton llamado botonFiltro para aplicar un filtro a los resultados.

Se crea un objeto Box llamado boxSur para manejar la colocación de etiquetaFiltro, textoFiltro y botonFiltro en la GUI. Se agregan los componentes de la GUI al panel de contenido de la ventana.

Manejo de eventos y consultas

Se crea un componente de escucha de eventos para el botón botonEnviar. Cuando se presiona este botón, se realiza una nueva consulta utilizando el texto ingresado en areaConsulta. Si la consulta es inválida, se muestra un mensaje de error y se ejecuta la consulta predeterminada. Se crea un objeto TableRowSorter llamado sorter que se utiliza para ordenar los resultados de la tabla. Se crea un componente de escucha de eventos para el botón botonFiltro. Cuando se presiona este botón, se aplica un filtro a los resultados de la tabla utilizando el texto ingresado en textoFiltro.

Manejo de la conexión a la base de datos

Cuando el usuario cierra la ventana, se verifica que la conexión a la base de datos esté cerrada y se sale de la aplicación. Si ocurre un error al cargar el controlador de la base de datos o al conectarse a la base de datos, se muestra un mensaje de error y se sale de la aplicación.

Referencias bibliográficas

Booch, G., Rumbaugh, J., Jacobson I. (2006). Pearson Educación. Deitel, HARVEY M. Y Deitel, P. J., (2007). Como programar en Java – Pearson Educación, México – Séptima Edición. Phillips, I.; Ries, E. (2000). La Biblia de Java. Editorial Anaya Multimedia.

Descargado por Angel AH ([email protected]) lOMoARcPSD| 16525121