Formación informática

Java | Joomla | MySQL

Curso de Java - Tema 32.2: conexión con MySQL y JavaBeans

¿Sabes dónde está Urueña?

En este apartado aprenderemos la organización de los paquete y clases necesarias para trabajar correctamente con MySQL y NetBeans.

Para la realización de este apartado he decidido crear una base de datos de todos los municipios de España a partir de los datos suministrados por el Instituto Nacional de Estadística de España en esta página web. El listado se obtiene en formato de Microsoft Excel y he realizado la conversión a formato MySQL. La base de datos contiene todas las comunidades, provincias y municipios de España a fecha de 1 de enero de 2017 con un diseño normalizado. Si quieres seguir este apartado usando la misma base de datos, puedes descargar el script de creación:

Archivos:
Fecha 22-01-2018
Lenguaje  SQL
Sistema  Multi-Sistema
Tamaño del Archivo 301.58 KB
Descargar 39

El esquema entidad-relación final de la base de datos es este:

Esquema de la base datos de Municipios de España en MySQL 5.7

Si quieres descargar el esquema de la base de datos en formato mwb para MySQL Workbench puedes descargarlo aquí:

Fecha 22-01-2018
Lenguaje  SQL
Sistema  Multi-Sistema
Tamaño del Archivo 7.36 KB
Descargar 17

Importar el driver

El primer paso es importar a la biblioteca de nuestro proyecto el driver que permitirá la conexión:

Biblioteca de un proyecto en NetBeans

Aunque parezca mentira, un error muy común cuando trabajamos con bases de datos es no realizar la importación de la biblioteca. Si no tenemos importada la biblioteca ¡NO se podrá realizar la conexión! Por lo tanto, tenemos que asegurarnos que está disponible en nuestro proyecto.

Paquete beans. Clases JavaBean

A continuación creamos un paquete llamado Beans para almacenar las clases JavaBean que nos ayudarán a interactuar con las tablas de nuestra base datos. Creamos uno para cada tabla con los métodos adecuados a cada caso según se explicó anteriormente en en el tema 31 - Bases de datos.

En nuestro ejemplo tenemos que crear tres JavaBeans con todos los campos de cada una de las tablas.

JavaBean para la tabla comunidad

 package beans; import java.io.Serializable; public class Comunidad implements Serializable { /*Creamos variables para cada uno de los campos de la tabla*/ private String codigoComunidad; private String comunidad; /** * Método constructor vacío para instanciar objetos */ public Comunidad() { } /** * Méotodo constructor con todos los parámetros * * @param codigoComunidad * @param comunidad */ public Comunidad(String codigoComunidad, String comunidad) { this.codigoComunidad = codigoComunidad; this.comunidad = comunidad; } /** * Método captador del campo codigo_comunidad * * @return Código de la Comunidad Autónoma */ public String getCodigoComunidad() { return codigoComunidad; } /** * Método captador del campo comunidad * * @return Nombre de la Comunidad Autónoma */ public String getComunidad() { return comunidad; } /** * Método definidor del campo codigo_comunidad * * @param codigoComunidad */ public void setCodigoComunidad(String codigoComunidad) { this.codigoComunidad = codigoComunidad; } /** * Método definidor dek campo comunidad * * @param comunidad */ public void setComunidad(String comunidad) { this.comunidad = comunidad; } /** * Método que nos permite imprimir el contenido de la tabla formateado * * @return */ @Override public String toString() { return codigoComunidad + " - " + comunidad; } } 

JavaBean para la tabla provincia

 package beans; import java.io.Serializable; /** * JavaBeans para realizar el tratamiento de la tabla provincia * * @author jugarenequipo */ public class Provincia implements Serializable{ /*Creamos atributos para almacenar los campos de la tabla*/ private String codigoComunidad; private String codigoProvincia; private String provincia; /** * Método constructor vacío para instanciar objetos * */ public Provincia() { } /** * Método constructor con todos los parámetros para recuperar e insertar * datos en la tabla * * @param codigoComunidad * @param codigoProvincia * @param provincia */ public Provincia(String codigoComunidad, String codigoProvincia, String provincia) { this.codigoComunidad = codigoComunidad; this.codigoProvincia = codigoProvincia; this.provincia = provincia; } /** * Método captador del campo CODAUTO * * @return Código de la Comunidad Autónoma */ public String getCodigoComunidad() { return codigoComunidad; } /** * Método captador del campo CPRO * * @return Código de la provincia */ public String getCodigoProvincia() { return codigoProvincia; } /** * Método captador del campo Provincia * * @return Nombre de la provincia */ public String getProvincia() { return provincia; } /** * Método definidor para el campo CODAUTO * * @param codigoComunidad */ public void setCodigoComunidad(String codigoComunidad) { this.codigoComunidad = codigoComunidad; } /** * Método definidor para el campo CPRO * * @param codigoProvincia */ public void setCodigoProvincia(String codigoProvincia) { this.codigoProvincia = codigoProvincia; } /** * Método definidor para el campo Provincia * * @param provincia */ public void setProvincia(String provincia) { this.provincia = provincia; } /** * Método para devolver el contenido de la tabla formateado * * @return Contenido de la tabla provincia formateado */ @Override public String toString() { return codigoComunidad + " - " + codigoProvincia + " - " + provincia; } } 

JavaBean para la tabla municipio

 package beans; import java.io.Serializable; /** * JavaBeans para realizar el tratamiento de la tabla Comunidad * * @author jugarenequipo */ public class Municipio implements Serializable{ /*Creamos variable para almacenar los registros de los campos de la tabla*/ private String codigoComunidad; private String codigoProvincia; private String codigoMunicipio; private String digitoControl; private String nombreMunicipio; /** * Método constructor vacío para instanciar objetos * */ public Municipio() { } /** * Método constructor vacío para introducir y recuperar datos * * @param codigoComunidad * @param codigoProvincia * @param codigoMunicipio * @param digitoControl * @param nombreMunicipio */ public Municipio(String codigoComunidad, String codigoProvincia, String codigoMunicipio, String digitoControl, String nombreMunicipio) { this.codigoComunidad = codigoComunidad; this.codigoProvincia = codigoProvincia; this.codigoMunicipio = codigoMunicipio; this.digitoControl = digitoControl; this.nombreMunicipio = nombreMunicipio; } /** * Método captador del campo CODAUTO * * @return Código de la Comunidad Autónoma */ public String getCodigoComunidad() { return codigoComunidad; } /** * Método captador del campo CPRO * * @return Código de la provincia */ public String getCodigoProvincia() { return codigoProvincia; } /** * Método captador del campo CMUN * * @return Código del Municipio */ public String getCodigoMunicipio() { return codigoMunicipio; } /** * Método captador del campo DC * * @return Dígito de control */ public String getDigitoControl() { return digitoControl; } /** * Método captador del campo NOMBRE * * @return Nombre del municipio */ public String getNombreMunicipio() { return nombreMunicipio; } /** * Método definidor para el campo CODAUTO * * @param codigoComunidad */ public void setCodigoComunidad(String codigoComunidad) { this.codigoComunidad = codigoComunidad; } /** * Método definidor para el campo CPRO * * @param codigoProvincia */ public void setCodigoProvincia(String codigoProvincia) { this.codigoProvincia = codigoProvincia; } /** * Método definidor para el campo CMUN * * @param codigoMunicipio */ public void setCodigoMunicipio(String codigoMunicipio) { this.codigoMunicipio = codigoMunicipio; } /** * Método definidor para el campo DC * * @param digitoControl */ public void setDigitoControl(String digitoControl) { this.digitoControl = digitoControl; } /** * Método definidor para el campo NOMBRE * * @param nombreMunicipio */ public void setNombreMunicipio(String nombreMunicipio) { this.nombreMunicipio = nombreMunicipio; } /** * Método para imprimir el contenido de la tabla * * @return */ @Override public String toString() { return codigoComunidad + " - " + codigoProvincia + " - " + codigoMunicipio + " - " + nombreMunicipio; } } 

Paquete dao. Clase ManejadoBd

Ahora tenemos que crear el paquete dao y la clase Manejador BD. En ella escribiremos el código para manejar la base de datos mediante la creación de métodos.

Método conector()

Escribiremos un método público llamado conector que nos devolverá un objeto de tipo Connection con la conexión. Para ellos necesitamos tres clases y varias variables de tipo String:

  1. Connection es una interface que nos permite realizar la conexión con el sistema gestor de bases de datos para realizar consultas y obtener resultados de ellas, en este caso MySQL. Además provee de información descriptiva sobre las tablas y otros objetos de la base datos. Inicializamos nulo el objeto al comienzo del proceso.
  2. 2. El objeto anterior será usado por otro de la clase DriverManager, que gestiona los controladores JDBC, junto con un el método forName de la clase Class que nos devuelve el objeto asociado a la interfaz Connection
  3. Durante este proceso puede producirse dos tipos de excepciones en la conexion y no encontrar la clase; así que hay que realizar el tratamiento adecuado. Mediante SQLException nos aseguramos de que la base de datos no sufrirá ningún cambio en caso de fallo en la conexión y mediante ClassNotFoundException nos aseguramos que no da error si no encuenta la clase.
  4. Crearemos variables de tipo String para almacenar los datos recopilados para realizar la conexión: controlador, urlBd, nombreBd, usuario y contraseña. Usaremos éstas en nuestros objetos.

La sintaxis genérica del método conector sería esta:

 public class ManejadorBaseDatos { public Connection conector() { //Objeto para realizar la conexión que inicializamos nula Connection conexion = null; //Variables para almacenar los datos de la conexión y la base de datos usada final String controlador = "controlador"; final String urlBd = "url"; final String nombreBd = "nombre_Base_Datos"; final String usuario = "usuario"; final String contrasena = "contrasena"; try { //Objeto para cargar el controlador Class.forName(controlador); //Realizamos la conexión a la base de datos usando el método getConnection de la clase DriverManager conexion = DriverManager.getConnection(urlBd, usuario, contrasena); } catch (ClassNotFoundException ex) { System.out.println(ex.getMessage()); } catch (SQLException ex) { System.out.println(ex.getMessage()); } return conexion; } } 

En el caso concreto del ejemplo de la base de datos de Municipios de España, la sintaxis del método conector de la clase ManejadorBaseDatos es esta:

 public class ManejadorBaseDatos { public Connection conector() { //Objeto para realizar la conexión que inicializamos nula Connection conexion = null; //Variables para almacenar los datos de la conexión y la base de datos usada final String controlador = "com.mysql.jdbc.Driver"; final String urlBd = "jdbc:mysql://localhost:3306/ine_municipios_esp?zeroDateTimeBehavior=convertToNull"; final String nombreBd = "INE Municipios España"; final String usuario = "root"; final String contrasena = "Admin"; try { //Objeto para cargar el controlador Class.forName(controlador); //Realizamos la conexión a la base de datos usando el método getConnection de la clase DriverManager conexion = DriverManager.getConnection(urlBd, usuario, contrasena); } catch (ClassNotFoundException ex) { System.out.println(ex.getMessage()); } catch (SQLException ex) { System.out.println(ex.getMessage()); } return conexion; } } 

Curso de Java - Tema 32.1: MySQL - Conexión con la base de datos | Curso de Java - Tema 32.3: realizando consultas SQL puras
Curso de Java - Índice Ejercicios Nivel Medio

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información