Sei sulla pagina 1di 26

UNIVERSIDAD TÉCNICA DE AMBATO

FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL


CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

ºqaºº
I. PORTADA
UNIVERSIDAD TÉCNICA DE AMBATO

Facultad de Ingeniería en Sistemas, Electrónica e Industrial

“Proyecto Académico de Fin de Semestre”

Título:

Carrera: Ingeniería Industrial en procesos de Automatización.

Área Académica: Informática

Línea de Investigación: Informática

Ciclo Académico y Paralelo: Septiembre 2017-febrero 2018 “A”

Alumnos participantes: Calvopiña García Edisson Fabián.

Módulo y Docente: Base de Datos Ing. Ruiz Jaime.

II.
1. PP
INFORME DEL PROYECTO
2. YY

2.1 Título

2.2 Objetivos

 Analizar cada concepto aprendido en el módulo de base de datos para


programar nuestra propia base de datos que será complemento para nuestro
aprendizaje.

 Verificar cada concepto en la práctica mediante los programas MySQL y java


NetBeans los cuales son objeto de estudio para la base de datos.

 Implementar la base de datos mediante la conexión entre MySQL y java


NetBeans para obtener nuestra base de datos y manipularla con datos
reales.

2.3 Resumen

En el presente documento estarán expuestos conceptos sobre base de datos, así


como también su manejo y uso y los programas que son parte de este estudio los
cuales cumplen un funcionamiento fundamental en la base ya que mediante estos
podemos manipular y hacer uso de la base así la cual es estudio del módulo de base
de datos y fundamental para el uso de una empresas o industria.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

2.4 Palabras clave: MySQL, Java NetBeans, Base de Datos, Conexión.

2.5 Introducción

Las bases de datos se ingeniaron gracias a la necesidad de las grandes empresas


de almacenar ingentes cantidades de información de una forma rápida, sencilla y
fiable, y que a su vez pudieran acceder a ella en cualquier momento sin necesidad
de desplazarse a salas dedicadas a archivar documentación, como hasta hace poco
se venía haciendo.

Cuando comenzó el despegue de los programas informáticos se empezaron a


almacenar datos en los archivos de los programas, lo cual era más cómodo, pero
aun así tenían grandes dificultades a la hora de querer modificar registros,
estructuras o simplemente buscar información.

A finales de los años sesenta nacen las bases de datos. En estas bases de datos se
guardan los datos utilizados por los usuarios, empresas, etc. Y los programas que
los utilizan no se tienen que preocupar de su mantenimiento ni almacenaje por lo
que un cambio en la base de datos no tiene por qué afectar en principio a los
programas que la utilizan.

Como definición de base de datos entendemos que se trata de un conjunto de datos


interrelacionados y almacenados sin redundancias innecesarias, los cuales sirven a
las aplicaciones sin estar relacionados de una manera directa entre ellos. [1]

2.6 Materiales y Metodología

Qué es una base de datos

Una base de datos (cuya abreviatura es BD) es una entidad en la cual se pueden
almacenar datos de manera estructurada, con la menor redundancia posible.
Diferentes programas y diferentes usuarios deben poder utilizar estos datos. Por lo
tanto, el concepto de base de datos generalmente está relacionado con el de red,
ya que se debe poder compartir esta información. Generalmente se habla de un
"Sistema de información" para designar a la estructura global que incluye todos los
mecanismos para compartir datos.

Ilustración 1: Estructura base de datos. [2]


UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Por qué utilizar una base de datos

Una base de datos proporciona a los usuarios el acceso a datos, que pueden visualizar,
ingresar o actualizar, en concordancia con los derechos de acceso que se les hayan
otorgado. Se convierte más útil a medida que la cantidad de datos almacenados crece.

Una base de datos puede ser local, es decir que puede utilizarla solo un usuario en un
equipo, o puede ser distribuida, es decir que la información se almacena en equipos
remotos y se puede acceder a ella a través de una red.

La principal ventaja de utilizar bases de datos es que múltiples usuarios pueden acceder
a ellas al mismo tiempo.

Administración de bases de datos


Rápidamente surgió la necesidad de contar con un sistema de administración para
controlar tanto los datos como los usuarios. La administración de bases de datos se
realiza con un Sistema de Gestión de Bases de Datos (SGBD) también
llamado DBMS (Database Management System). El DBMS es un conjunto de servicios
(aplicaciones de software) que permite a los distintos usuarios un fácil acceso a la
información y proporciona las herramientas para la manipulación de los datos
encontrados en la base (insertar, eliminar, editar).

Ilustración 2: Administración base de datos [2]

El DBMS puede dividirse en tres subsistemas: el sistema de administración de


archivos, cuya función es almacenar la información en un medio físico; el DBMS
interno, que sirve para ubicar la información en orden; y el DBMS externo, que
representa a la interfaz de usuario. [2]
Modelo Entidad Relación.

Las bases de datos son un gran pilar de la programación actual, ya que nos permiten
almacenar y usar de forma rápida y eficiente cantidades ingentes de datos con cierta
facilidad. En la actualidad se usa de forma mayoritaria las bases de datos
relacionales (dominadas por distintos gestores a través del lenguaje SQL, en gran
medida).
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Pero ahora vamos a dar un pequeño repaso a lo más esencial del modelo entidad-
relación, que es y ha sido durante años la mejor forma de representar la estructura
de estas bases de datos relacionales (o de representar sus esquemas).

¿Qué es el modelo entidad-relación?


Como ya he comentado este modelo es solo y exclusivamente un método del que
disponemos para diseñar estos esquemas que posteriormente debemos de
implementar en un gestor de BBDD (bases de datos). Este modelo se representa a
través de diagramas y está formado por varios elementos.

Este modelo habitualmente, además de disponer de un diagrama que ayuda a


entender los datos y como se relacionan entre ellos, debe de ser completado con un
pequeño resumen con la lista de los atributos y las relaciones de cada elemento.
Elementos del modelo entidad-relación

Entidad

Las entidades representan cosas u objetos (ya sean reales o abstractos), que se
diferencian claramente entre sí.
Para poder seguir un ejemplo durante el artículo añadiré ejemplos sobre un taller
mecánico, donde se podría crear las siguientes entidades:

 Coches (objeto físico): contiene la información de cada taller.

 Empleado (objeto físico): información de los trabajadores.

 Cargo del empleado (cosa abstracta): información de la función del empleado.


Estas entidades se representan en un diagrama con un rectángulo, como los
siguientes.

Ilustración 3: Modelos de Entidades [3]

Atributos

Los atributos definen o identifican las características de entidad (es el contenido de


esta entidad). Cada entidad contiene distintos atributos, que dan información sobre
esta entidad. Estos atributos pueden ser de distintos tipos (numéricos, texto,
fecha...).

Siguiendo el ejemplo de antes podemos analizar los atributos de nuestra entidad


"Coches", que nos darán información sobre los coches de nuestro supuesto taller.
Unos posibles atributos serían los siguientes: número de chasis, matrícula, DNI del
propietario, marca, modelo y muchos otros que complementen la información de
cada coche.

Los atributos se representan como círculos que descienden de una entidad, y no es


necesario representarlos todos, sino los más significativos, como a continuación.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Ilustración 4: Modelo de Entidad y Atributos [3]

En un modelo relacional (ya implementado en una base de datos) un ejemplo de


tabla dentro de una BBDD podría ser el siguiente.

Número de chasis Matrícula DNI del propietario


5tfem5f10ax007210 4817 BFK 45338600L
6hsen2j98as001982 8810 CLM 02405068K
5rgsb7a19js001982 0019 GGL 40588860J

Este ejemplo es con tres atributos, pero un coche podría tener cientos (si fuese
necesario) y seguirían la misma estructura de columnas, tras implementarlo en
una BBDD.

Relación

Es un vínculo que nos permite definir una dependencia entre varias entidades, es
decir, nos permite exigir que varias entidades compartan ciertos atributos de forma
indispensable.

Por ejemplo, los empleados del taller (de la entidad "Empleados") tienen un cargo
(según la entidad "Cargo del empleado"). Es decir, un atributo de la entidad
"Empleados" especificará que cargo tiene en el taller, y tiene que ser idéntico al que
ya existe en la entidad "Cargo del empleado".
Las relaciones se muestran en los diagramas como rombos, que se unen a las
entidades mediante líneas.

Ilustración 5: Cuadro de relación [3]

Yo, bajo mi punto de vista, entiendo mejor esto en una tabla (de una implementación
en una BBDD), por lo que voy a poner el ejemplo de cómo se representaría
(resaltada la relación, que posteriormente veremos cómo se haría).

Empleados
Nombre DNI Cargo
Carlos Sánchez 45338600L 001
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Pepe Sánchez 02405068K 002


Juan Sánchez 40588860J 002
Cargo del empleado
ID del cargo Descripción
001 Jefe de taller
002 Mecánico

Relaciones de cardinalidad

Podemos encontrar distintos tipos de relaciones según como participen en ellas las
entidades. Es decir, en el caso anterior cada empleado puede tener un cargo, pero
un mismo cargo lo pueden compartir varios empleados.
Esto complementa a las representaciones de las relaciones, mediante un intervalo
en cada extremo de la relación que especifica cuantos objetos o cosas (de cada
entidad) pueden intervenir en esa relación.

Uno a uno: Una entidad se relaciona únicamente con otra y viceversa. Por ejemplo,
si tuviésemos una entidad con distintos chasis y otra con matrículas deberíamos de
determinar que cada chasis solo puede tener una matrícula (y cada matrícula un
chasis, ni más en ningún caso).

Ilustración 6: Modelo entidad relación uno a uno [3]

Uno a varios o varios a uno: determina que un registro de una entidad puede estar
relacionado con varios de otra entidad, pero en esta entidad existir solo una vez.
Como ha sido en el caso anterior del trabajador del taller.

Ilustración 7: Modelo entidad relación uno a varios [3]

Varios a varios: determina que una entidad puede relacionarse con otra con
ninguno o varios registros y viceversa. Por ejemplo, en el taller un coche puede ser
reparado por varios mecánicos distintos y esos mecánicos pueden reparar varios
coches distintos.

Ilustración 8: Modelo relacional varios a varios. [3]

Los indicadores numéricos indican el primero el número mínimo de registros en una


relación y posteriormente el máximo (si no hay límite se representa con una "n").
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Claves

Es el atributo de una entidad, al que le aplicamos una restricción que lo distingue de


los demás registros (no permitiendo que el atributo específico se repita en la entidad)
o le aplica un vínculo (exactamente como comentábamos en las relaciones). Estos
son los distintos tipos:

Superclase: aplica una clave o restricción a varios atributos de la entidad, para así
asegurarse que en su conjunto no se repitan varias veces y así no poder entrar en
dudas al querer identificar un registro.

Clave primaria: identifica inequívocamente un solo atributo no permitiendo que se


repita en la misma entidad. Como sería la matrícula o el número de chasis de un
coche (no puede existir dos veces el mismo).

Clave externa o clave foránea: este campo tiene que estar estrictamente
relacionado con la clave primaria de otra entidad, para así exigir que exista
previamente ese clave. Anteriormente hemos hablado de ello cuando
comentábamos que un empleado indispensablemente tiene que tener un cargo (que
lo hemos representado numéricamente), por lo cual si intentásemos darle un cargo
inexistente el gestor de bases de datos nos devolvería un error. [3]

MySQL

Es un sistema de gestión de base de datos relacional o SGBD. Este gestor de base


de datos en multihilo y multiusuario, lo que le permite ser utilizado por varias
personas al mismo tiempo, e incluso, realizar varias consultas a la vez, lo que lo
hace sumamente versátil.

Nació como una iniciativa de Software Libre y aún sigue ofreciéndose como tal,
para usuarios particulares. Pero si se desea utilizarlo para promover datos en una
empresa, se puede comprar una licencia, como un software propietario, que es
autoría de la empresa patrocinante (Actualmente Oracle Corporation).

La mayor parte del código se encuentra escrito en lenguaje C/C++ y la sintaxis de


su uso es bastante simple, lo que permite crear bases de datos simples o complejas
con mucha facilidad. Además, es compatible con múltiples plataformas informáticas
y ofrece una infinidad de aplicaciones que permiten acceder rápidamente a las
sentencias del gestor de base de datos.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Ilustración 9: MySQL software [4]

Utilidad de MySQL

Como comentábamos anteriormente este gestor de base de datos es muy utilizado


en desarrollo web, ya que permite a los desarrolladores y diseñadores, realizar
cambios en sus sitios de manera simple, con tan sólo cambiar un archivo, evitando
tener que modificar todo el código web. Esto se debe a que MySQL, trabaja con un
sistema centralizado de gestión de datos, que permite realizar cambios en un solo
archivo y que se ejecuta en toda la estructura de datos que se comparte en la red.
Además, permite incluir noticias e información rápidamente en un sitio web,
utilizando un simple formulario, sin tener que tocar el código del website.

Cuando se combina con PHP, se convierte en una mezcla poderosa, que siempre
es tomada en cuenta para realizar aplicaciones cliente/servidor, que requieran el uso
de una base de datos rápida, segura y potente.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Ilustración 10: Utilidad MySQL esquema relacional [4]

MySQL, también ofrece la posibilidad de realizar programas o aplicaciones que


requieran acceso a plataformas de base de datos rápidas. [4]

Java NetBeans.

La creación y gestión de bases de datos MySQL con Java es uno de los


conocimientos esenciales que todo Java Programar debe poseer. Esta guía ha sido
diseñada por un principiante, para principiantes, exponiendo los conocimientos
básicos que se necesitan para entrar en el mundo del MySQL en Java

A continuación, voy a describir paso a paso lo que se necesita para crear una base
de datos y utilizar MySQL con Java. Esta guía ha sido diseñada para aquellos
usuarios que sean principiantes en el manejo de bases de datos MySQL con Java.
Yo alguna vez estuve en dicha posición y cómo me hubiese encantado que alguien
me explicara lo que debía hacer paso por paso. Veamos qué es lo que se necesita.

[5]1- Necesitamos contar con MySQL y Apache Server


El Apache y MySQL server son necesarios para que se pueda dar la comunicación
de la aplicación Java con la base de datos. Antes ya he escrito en este blog
sobre XAMPP y he mostrado cómo crear bases de datos desde PHPmyAdmin. En
este tutorial no crearemos las bases de datos con este método, sino que a través de
programación crearemos y modificaremos la base de datos en MySQL.

3- Creamos un proyecto en Netbeans


Creamos un proyecto tipo Java Application llamado MySQL_Test. Dentro vamos a
agregar un JFrame y una clase. El JFrame lo vamos a llamar Window y la clase se
llamará MySQL. Recordamos agregar la librería que descargamos en el paso
anterior.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

4- Programamos la clase MySQL


Dentro de la clase MySQL vamos a colocar todos los métodos relacionados al
manejo de la base de datos y la conexión con el servidor. Lo primero que haremos
será crear una variable global. Estas es:

1 private static Connection Conexion;


Ahora creamos un método tipo void llamado MySQLConnection(). Aquí vamos a
iniciar una conexión con el servidor MySQL. El código es el siguiente:

public void MySQLConnection(String user, String pass, String db_name)


throws Exception {
try {
1 Class.forName("com.mysql.jdbc.Driver");
2 Conexion =
3 DriverManager.getConnection("jdbc:mysql://localhost:3306/" + db_name,
4 user, pass);
5 JOptionPane.showMessageDialog(null, "Se ha iniciado la conexión
6 con el servidor de forma exitosa");
7 } catch (ClassNotFoundException ex) {
8 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
9 null, ex);
10 } catch (SQLException ex) {
11 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
null, ex);
}
}
Como vemos, necesitamos introducir como parámetros el nombre de usuario, la
contraseña y el nombre de la base de datos. Podemos hacer una prueba en este
momento. Si tenemos todo en orden, creamos una instancia de la clase MySQL en
el método de la clase principal (MySQL_Test) y ejecutamos el método
MySQLConnection(). Aquí está el código que se coloca en la clase principal:
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

1 public static void main(String[] args) {


2 MySQL db = new MySQL();
3 db.MySQLConnection("root", "", "");
4 }
El nombre de usuario por defecto es root. La contraseña y nombre de la base de
datos la dejamos en blanco. Si tenemos todo en orden, el resultado debe ser el
siguiente:

Podemos agregar un método para finalizar la conexión con el servidor.

public void closeConnection() {


1 try {
2 Conexion.close();
3 JOptionPane.showMessageDialog(null, "Se ha finalizado la conexión
4 con el servidor");
5 } catch (SQLException ex) {
6 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE, null,
7 ex);
8 }
}
Ahora crearemos otro método, esta vez para crear una base de datos. Lo
llamaremos createDB(). El código es el siguiente:

1 public void createDB(String name) {


2 try {
3 String Query = "CREATE DATABASE " + name;
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

4 Statement st = Conexion.createStatement();
5 st.executeUpdate(Query);
6 closeConnection();
7 MySQLConnection("root", "", name);
8 JOptionPane.showMessageDialog(null, "Se ha creado la base de datos " +
9 name + " de forma exitosa");
10 } catch (SQLException ex) {
11 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
12 null, ex);
}
}
Un punto que me gustaría resaltar es la variable que he llamado Query. Esta variable
contiene una instrucción que es con lo que se trabaja en MySQL. Para las bases de
datos, el Query consta de los comantos CREATE TABLE seguido del nombre de la
base de datos. Nótese que para que este método se pueda utilizar es necesario
primero ejecutar MySQLConnection(). Una vez que se ha creado la Base de Datos,
se cierra la conexión y se reinicia, ahora introduciendo como parámetro la base de
datos que hemos creado.
Vamos a crear un método para crear una tabla dentro de la base de datos. Lo
llamaremos createTable().

public void createTable(String name) {


try {
1
String Query = "CREATE TABLE " + name + ""
2
+ "(ID VARCHAR(25),Nombre VARCHAR(50), Apellido
3
VARCHAR(50),"
4
+ " Edad VARCHAR(3), Sexo VARCHAR(1))";
5
6
Statement st = Conexion.createStatement();
7
st.executeUpdate(Query);
8
JOptionPane.showMessageDialog(null, "Se ha creado la tabla " + name + "
9
de forma exitosa");
10
} catch (SQLException ex) {
11
Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
12
null, ex);
13
}
}
Tenemos lo que se necesita para construir una Base de Datos y una Tabla. El Query
esta vez luce un poco diferente. Para crear la tabla se utiliza CREATE
TABLE seguido del nombre de la tabla, se abre un paréntesis y se coloca el nombre
de las columnas que va a tener y el tipo de dato de cada columna, separando cada
una columna de otra con una coma (,). Para este ejemplo utilizará VARCHAR,
aunque para la edad bien pude utilizar INT. Entre paréntesis se coloca la cantidad
máxima de caracteres que podrá almacenar una celda de determinada columna. La
tabla poseerá 5 columnas: ID, Nombre, Apellido, Edad y Sexo.
Ahora hay que crear un método para introducir los registros a la tabla. Crearemos el
método insertData(). El código es el siguiente:
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

public void insertData(String table_name, String ID, String name, String


lastname, String age, String gender) {
1
try {
2
String Query = "INSERT INTO " + table_name + " VALUES("
3
+ "\"" + ID + "\", "
4
+ "\"" + name + "\", "
5
+ "\"" + lastname + "\", "
6
+ "\"" + age + "\", "
7
+ "\"" + gender + "\")";
8
Statement st = Conexion.createStatement();
9
st.executeUpdate(Query);
10
JOptionPane.showMessageDialog(null, "Datos almacenados de
11
forma exitosa");
12
} catch (SQLException ex) {
13
JOptionPane.showMessageDialog(null, "Error en el almacenamiento
14
de datos");
15
}
}
Ahora el Query posee la instrucción INSERT INTO, seguido del nombre de la tabla
en la que se quiere insertar la información. Luego se agrega la palabra VALUES y
entre paréntesis los valores que se desean insertar, entre comillas. Digamos que
queremos introducir la información de Juan Rodríguez, hombre con 19 años de
edad. Su ID es 8-835-532. El nombre de la tabla es Registros. El Query quedaría
de la siguiente forma:
INSERT INTO Registros VALUES (“8-835-532”, “Juan”, “Rodríguez”, “19”,
“M”);
Ahora vamos a crear un método llamado getValues() para hacer las consultas en la
base de datos. Por ahora vamos a imprimir en la consola.

1 public void getValues(String table_name) {


2 try {
3 String Query = "SELECT * FROM " + table_name;
4 Statement st = Conexion.createStatement();
5 java.sql.ResultSet resultSet;
6 resultSet = st.executeQuery(Query);
7
8 while (resultSet.next()) {
9 System.out.println("ID: " + resultSet.getString("ID") + " "
10 + "Nombre: " + resultSet.getString("Nombre") + " " +
11 resultSet.getString("Apellido") + " "
12 + "Edad: " + resultSet.getString("Edad") + " "
13 + "Sexo: " + resultSet.getString("Sexo"));
14 }
15
16 } catch (SQLException ex) {
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

17 JOptionPane.showMessageDialog(null, "Error en la adquisición de


18 datos");
}
}
Ahora el Query está formado por las palabras SELECT * FROM seguidas del
nombre de la tabla. El asterisco indica que se desean consultar todos los valores de
una fila determinada. Para hacer la consulta necesitamos crear un resultSet. Esta
variable funciona como una cabeza lectora que va leyendo fila a fila. Con el
método getString() leemos las columnas que deseamos.
Ahora le vamos a agregar un método para borrar registros. Lo
llamaremos deleteRecord() y le introduciremos como parámetro el nombre de la
tabla y el ID del registro que queremos eliminar.

public void deleteRecord(String table_name, String ID) {


1 try {
2 String Query = "DELETE FROM " + table_name + " WHERE ID = \""
3 + ID + "\"";
4 Statement st = Conexion.createStatement();
5 st.executeUpdate(Query);
6
7 } catch (SQLException ex) {
8 System.out.println(ex.getMessage());
9 JOptionPane.showMessageDialog(null, "Error borrando el registro
10 especificado");
11 }
}
Quizás podríamos agregar métodos para borrar tablas y bases de datos pero vamos
a dejarlo así por ahora. Hemos terminado de programar la clase MySQL. Aquí la
tenemos:

1 package mysql_test;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.SQLException;
6 import java.sql.Statement;
7 import java.util.logging.Level;
8 import java.util.logging.Logger;
9 import javax.swing.JOptionPane;
10
11 public class MySQL {
12
13 private static Connection Conexion;
14
15 public void MySQLConnection(String user, String pass, String db_name)
16 {
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

17 try {
18 Class.forName("com.mysql.jdbc.Driver");
19 Conexion =
20 DriverManager.getConnection("jdbc:mysql://localhost:3306/" + db_name,
21 user, pass);
22 System.out.println("Se ha iniciado la conexión con el servidor de
23 forma exitosa");
24 } catch (ClassNotFoundException ex) {
25 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
26 null, ex);
27 } catch (SQLException ex) {
28 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
29 null, ex);
30 }
31 }
32
33 public void closeConnection() {
34 try {
35 Conexion.close();
36 System.out.println("Se ha finalizado la conexión con el servidor");
37 } catch (SQLException ex) {
38 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
39 null, ex);
40 }
41 }
42
43 public void createDB(String name) {
44 try {
45 String Query = "CREATE DATABASE " + name;
46 Statement st = Conexion.createStatement();
47 st.executeUpdate(Query);
48 MySQLConnection("root", "", name);
49 JOptionPane.showMessageDialog(null, "Se ha creado la base de
50 datos " + name + " de forma exitosa");
51 } catch (SQLException ex) {
52 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
53 null, ex);
54 }
55 }
56
57 public void createTable(String name) {
58 try {
59 String Query = "CREATE TABLE " + name + ""
60 + "(ID VARCHAR(25),Nombre VARCHAR(50), Apellido
61 VARCHAR(50),"
62 + " Edad VARCHAR(3), Sexo VARCHAR(1))";
63 JOptionPane.showMessageDialog(null, "Se ha creado la base de
64 tabla " + name + " de forma exitosa");
65 Statement st = Conexion.createStatement();
66 st.executeUpdate(Query);
67 } catch (SQLException ex) {
68 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
69 null, ex);
70 }
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

71 }
72
73 public void insertData(String table_name, String ID, String name, String
74 lastname, String age, String gender) {
75 try {
76 String Query = "INSERT INTO " + table_name + " VALUES("
77 + "\"" + ID + "\", "
78 + "\"" + name + "\", "
79 + "\"" + lastname + "\", "
80 + "\"" + age + "\", "
81 + "\"" + gender + "\")";
82 Statement st = Conexion.createStatement();
83 st.executeUpdate(Query);
84 JOptionPane.showMessageDialog(null, "Datos almacenados de
85 forma exitosa");
86 } catch (SQLException ex) {
87 JOptionPane.showMessageDialog(null, "Error en el
88 almacenamiento de datos");
89 }
90 }
91
92 public void getValues(String table_name) {
93 try {
94 String Query = "SELECT * FROM " + table_name;
95 Statement st = Conexion.createStatement();
96 java.sql.ResultSet resultSet;
97 resultSet = st.executeQuery(Query);
98
99 while (resultSet.next()) {
100 System.out.println("ID: " + resultSet.getString("ID") + " "
101 + "Nombre: " + resultSet.getString("Nombre") + " " +
102 resultSet.getString("Apellido") + " "
103 + "Edad: " + resultSet.getString("Edad") + " "
104 + "Sexo: " + resultSet.getString("Sexo"));
105 }
106
107 } catch (SQLException ex) {
108 JOptionPane.showMessageDialog(null, "Error en la adquisición de
datos");
}
}

public void deleteRecord(String table_name, String ID) {


try {
String Query = "DELETE FROM " + table_name + " WHERE ID = \""
+ ID + "\"";
Statement st = Conexion.createStatement();
st.executeUpdate(Query);

} catch (SQLException ex) {


System.out.println(ex.getMessage());
JOptionPane.showMessageDialog(null, "Error borrando el registro
especificado");
}
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Vamos al siguiente paso.

5- Creamos una interfaz gráfica


Vamos a la clase Window.java y diseñamos una sencilla interfaz de usuario.

Colocamos los 4 botones con las opciones que deseamos que posea nuestra
aplicación. Las opciones “Registrar Usuario“, “Obtener Registros” y “Borrar
Registro” se encuentran inactivas ya que no pueden ser ejecutadas si no se inicia
la conexión con el servidor MySQL.
Vamos a crear una clase con un formulario de registro y una con la opción de borrar
un registro. He agregado las clases Window_Register y Window_Delete con las
siguientes interfaces gráficas.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Podemos pasar al siguiente paso.

6- Programamos la interfaz gráfica


La prioridad de toda aplicación Java es ejecutar el método main de la clase principal.
Vamos a crear una instancia para que lo primero que haga nuestro programa sea
mostrarnos la ventana principal.
Nuestro método main de la clase MySQL_Test quedaría de la siguiente forma:

1 public static void main(String[] args) {


2 Window w = new Window();
3 w.setVisible(true);
4 }

Ahora cada vez que ejecutamos nuestro programa nos aparece la ventana principal.
Vamos a programar la clase Window.java.
Primero creamos un objeto llamado db como una instancia de la clase MySQL. En
el botón “Conectar a base de Datos” debemos colocar el siguiente código:
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

1 db.MySQLConnection("root", "", "");


2 db.createDB("MySQL_Test");
3 db.createTable("Registros");

Ejecutemos el programa para ver si todo está en orden.


En nuestro PHPMyAdmin (en XAMPP presionamos el botón Admin al lado de
MySQL) nos debe aparecer una nueva base de datos con la tabla registros en su
interior.

Ahora el código que colocamos en el botón debemos cambiarlo, ya que no podemos


crear una base de datos con el mismo nombre 2 veces. Ya tenemos nuestra base
de datos con la tabla registros dentro, así que vamos a cambiar la programación.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

db.MySQLConnection("root", "", "MySQL_Test");


1
jButtonConnect.setEnabled(false);
2
jButtonDelete.setEnabled(true);
3
jButtonGet.setEnabled(true);
4
jButtonRegister.setEnabled(true);
5

Vemos que al iniciar la conexión se des habilita el botón de conectar y se habilitan


los demás botones. A continuación el código para cada botón:
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Ahora vamos a cada ventana que hemos agregado y programamos los botones.
Primero la ventana de borrar registros.

En el botón de Borrar Registro colocamos:

MySQL db = new MySQL();


1
db.MySQLConnection("root", "", "MySQL_Test");
2
db.deleteRecord("Registros", jTextFieldID.getText());
3
db.closeConnection();
4
this.dispose();
5
Instanciamos la clase MySQL, luego abrimos una conexión, borramos el registro con
el ID que se haya introducido en el TextField y cerramos la conexión. Por último
cerramos la ventana.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Ahora vamos a la ventana de registro de datos. La programación del botón Registrar


es la siguiente:

MySQL db = new MySQL();


1
db.MySQLConnection("root", "", "MySQL_Test");
2
db.insertData("Registros", jTextFieldID.getText(),
3
jTextFieldNombre.getText(),
4
jTextFieldApellido.getText(),
5
jTextFieldEdad.getText(),
6
jComboBoxSexo.getSelectedItem().toString());
7
db.closeConnection();
8
this.dispose();
9
Nuestro código nos queda así:

Con esto hemos terminado nuestra programación. Tenemos una pequeña aplicación
que nos permite registrar información en una base de datos, imprimirla y borrar
ciertos registros.

7- Probamos nuestra aplicación


Ya que tenemos nuestro código terminado podemos proceder a probar lo que hemos
hecho. [5]

2.7 Resultados y Discusión

En este documento pudimos observar la importancia de tener una base de datos así
como también la importancia de saber hacer una base bien estructurada y funcional
mediante los pasos y maneras a seguir demostrado anteriormente así como la
debida conexión entre MySQL y java NetBeans para un buen manejo de la base
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

tanto para la inserción de datos como la eliminación y no caer en la redundancia de


información.

2.8 Conclusiones

 Analizamos cada uno de los conceptos planteados que fueron estudio de


este proyecto para así obtener un aprendizaje optimo en el modulo de base
de datos.

 Verificamos cada concepto tanto de MySQL como de java NetBeans para su


aplicación en nuestra base da datos que ya fue detallada anteriormente.

 Implementamos todo lo anterior y lo aplicamos en nuestra base de datos la


misma que podemos manipular los datos que en ella se encuentran, así
como también aumentar datos o eliminar.

2.9 Referencias bibliográficas

[1] «desarrolloweb.com,» [En línea]. Available:


https://desarrolloweb.com/articulos/introduccion-base-datos.html. [Último acceso: 20
Enero 2018].

[2] «CCM,» ccm.net, 22 Septiembre 2017. [En línea]. Available:


http://es.ccm.net/contents/66-introduccion-a-las-bases-de-datos. [Último acceso: 20
Enero 2018].

[3] «Genbeta,» Genbetadev.com, [En línea]. Available: https://www.genbetadev.com/bases-


de-datos/fundamento-de-las-bases-de-datos-modelo-entidad-relacion. [Último acceso: 20
Enero 2018].

[4] «Culturacion,» culturacion.com, [En línea]. Available: http://culturacion.com/que-es-y-


para-que-sirve-mysql/. [Último acceso: 20 Enero 2018].

[5] A. G. Gonzalez, «panamahitek,» panamahitek.com, 4 Enero 2015. [En línea]. Available:


http://panamahitek.com/los-7-pasos-seguir-para-el-manejo-de-mysql-con-java/. [Último
acceso: 20 Enero 2018].

2.10. Fotografías y gráficos


UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018

Potrebbero piacerti anche