UNIVERSIDAD ISRAEL
CIENCIAS DE LA INGENIERÍA
CARRERA DE SISTEMAS DE INFORMACIÓN
PROGRAMACIÓN 2
SEMESTRE 2021 B
LABORATORIO S7-8
TEMA: Bases de Datos en Java
PROFESOR: Mg. Luis Fernando Aguas Bucheli
QUITO, 2022
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
1. TEMA: Bases de Datos en Java
2. OBJETIVOS:
• Adquirir los conceptos básicos relacionados con Java
• Reconocer las características de Java
3. OBJETIVOS DE DESARROLLO SOSTENIBLE:
Indicador 4.7: De aquí a 2030, asegurar que todos los alumnos adquieran los conocimientos
teóricos y prácticos necesarios para promover el desarrollo sostenible, entre otras cosas
mediante la educación para el desarrollo sostenible y los estilos de vida sostenibles, los derechos
humanos, la igualdad de género, la promoción de una cultura de paz y no violencia, la ciudadanía
mundial y la valoración de la diversidad cultural y la contribución de la cultura al desarrollo
sostenible
4. INTRODUCCION:
Una Base de Datos es una serie de tablas que contienen información ordenada en alguna
estructura que facilita el acceso a esas tablas, ordenarlas y seleccionar filas de las tablas según
criterios específicos. Las bases de datos generalmente tienen índices asociados a alguna de sus
columnas, de forma que el acceso sea lo más rápido posible.
Las Bases de Datos son, sin lugar a dudas, las estructuras más utilizadas en ordenadores; ya que
son el corazón de sistemas tan complejos como el censo de una nación, la nómina de empleados
de una empresa, el sistema de facturación de una multinacional, o el medio por el que nos
expiden el billete para las próximas vacaciones.
En el caso, por ejemplo, del registro de trabajadores de una empresa, se puede imaginar una
tabla con los nombres de los empleados y direcciones, y sueldos, retenciones y beneficios. Para
organizar esta información, se puede empezar con una tabla que contenga los nombres de los
empleados, su dirección y su número de teléfono. También se podría incluir la información
relativa a su sueldo, categoría, última subida de salario, etc.
¿Podría todo esto colocarse en una sola tabla? Casi seguro que no. Los rangos de salario para
diferentes empleados probablemente sean iguales, por lo que se podría optimizar la tabla
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
almacenando solamente el tipo de salario en la tabla de empleados y los rangos de salario (en
euros) en otra tabla, indexada a través del tipo de salario. Por ejemplo
Los datos de la columna Tipo de Salario están referidos a la segunda tabla. Se pueden imaginar
muchas categorías para estas tablas secundarias, como por ejemplo la provincia de residencia y
los tipos de retención de Hacienda, o si tiene seguro de vida, vivienda propia, coche,
apartamento en la playa, casa en el campo, etc. Cada tabla tiene una primera columna que sirve
de clave para las demás columnas, que ya contienen datos. La construcción de tablas en las
bases de datos es tanto un arte como una ciencia, y su estructura está referida por su forma
normal. Las tablas se dice que están en primera, segunda o tercera forma normal, o de modo
abreviado como 1NF, 2NF o 3NF.
• Cada celda de la tabla debe tener solamente un valor (nunca un conjunto de valores).
(1NF)
• 1NF y cada columna que no es clave depende completamente de la columna clave. Esto
significa que hay una relación uno a uno entre la clave primaria y las restantes celdas de
la fila. (2NF)
• 2NF y todas las columnas que no son clave son mutuamente independientes. Esto
significa que no hay columnas de datos que contengan datos calculados a partir de los
datos de otras columnas. (3NF)
Actualmente todas las bases de datos se construyen de forma que todas sus tablas están en la
Tercera Forma Normal (3NF); es decir, que las bases de datos están constituidas por un número
bastante alto de tablas, cada una de ellas con relativamente pocas columnas de información.
A la hora de extraer datos de las tablas, se realizan consultas contra ella. Por ejemplo, si se quiere
generar una tabla de empleados y sus rangos de salario para algún tipo de plan especial de la
empresa, esa tabla no existe directamente en la base de datos, así que debe construirse
haciendo una consulta a la base de datos, y se obtendría una tabla que contendría la siguiente
información:
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
O quizá ordenada por el incremento de salario:
Para generar la tabla anterior se habría de realizar una consulta a la base de datos que tendría
la siguiente forma:
SELECT DISTINCTROW Empleados.Nombre, TipoDeSalario.Minimo,
TipoDeSalario.Maximo FROM Empleados INNER JOIN TipoDeSalario ON
Empleados.SalarioKey = TipoDeSalario.SalarioKey
ORDER BY TipoDeSalario.Minimo;
El lenguaje en que se ha escrito la consulta es SQL, actualmente soportado por casi todas las
bases de datos a lo largo del mundo. Los estándares de SQL han sido varios a lo largo de los años
y muchas de las bases de datos para PC soportan alguno de esos tipos. El estándar SQL-92 es el
que se considera origen de todas las actualizaciones. Hay que tener en cuenta, que hay
posteriores versiones de SQL, perfeccionadas y extendidas para explotar características únicas
de bases de datos particulares; así que no conviene separarse del estándar básico si se pretende
hacer una aplicación que pueda atacar a cualquier tipo de base de datos. Al final del capítulo, el
lector puede encontrar una pequeña revisión del lenguaje SQL.
Desde que los PC se han convertido en una herramienta presente en la mayor parte de las
oficinas, se han desarrollado un gran número de bases de datos para ejecutarse en ese tipo de
plataformas; desde bases de datos muy elementales como Microsoft Works, hasta otras ya
bastante sofisticadas como Approach, dBase, Paradox, Access y Foxbase.
Otra categoría ya más seria de bases de datos para PC son aquellas que usan la plataforma PC
como cliente para acceder a un servidor. Estas bases de datos son IBM DB/2, Microsoft SQL
Server, Oracle, Sybase, SQLBase, Informix, XDB y Postgres. Todas estas bases de datos soportan
varios dialectos similares de SQL, y todas parecen, a primera vista, intercambiables. La razón de
que no sean intercambiables, por supuesto, es que cada una está diseñada con unas
características de rendimiento distintas, con un interfaz de usuario y programación diferente.
Aunque todas ellas soportan SQL y la programación es similar, cada base de datos tiene su propia
forma de recibir las consultas SQL y su propio modo de devolver los resultados. Aquí es donde
aparece el siguiente nivel de estandarización, de la mano de ODBC (Open DataBase Conectivity).
La idea es que se pueda escribir código independientemente de quien sea el propietario de la
base de datos a la que se quiera acceder, de forma que se puedan extraer resultados similares
de diferentes tipos de bases de datos sin necesidad de tocar el código del programa. Si se
consiguiese escribir alguna forma de trazadores para estas bases de datos que tuviesen un
interfaz similar, el objetivo no sería difícil de alcanzar.
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Microsoft hizo su primer intento en 1992, con la especificación que llamaron Object Database
Connectivity; y que se suponía iba a ser la respuesta a la conexión a cualquier tipo de base de
datos desde Windows. Como en toda aplicación informática, esta no fue la única versión, sino
que hubo varias hasta llegar a la de 1994, que era más rápida y más estable, además de ser la
primera de las versiones de 32 bits. Y, por si fuera poco, ODBC comenzó a desplazarse a otras
plataformas diferentes de Windows, acaparando además de los PC también el mundo de las
estaciones de trabajo. Tanto es así, que ahora casi todos los fabricantes de bases de datos
proporcionan un driver ODBC para acceder a su base de datos.
Sin embargo, ODBC dista mucho de ser la panacea que en un principio se podía pensar y que
Microsoft se encargó de hacer creer. Muchos fabricantes de bases de datos soportan ODBC
como un interfaz alternativo al suyo estándar, y la programación en ODBC no es nada, pero que
nada trivial; incluyendo toda la parafernalia de la programación para Windows con handles,
punteros y opciones que son duras de asimilar. Finalmente, ODBC no es un estándar libre, ha
sido desarrollado y es propiedad de Microsoft, lo cual, dados los vientos que soplan en este
competitivo mundo de las compañías de software, hace su futuro difícil de predecir.
5. DESARROLLO:
• Ingresamos a Netbeans
• Creamos un nuevo proyecto:
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
• Colocamos como nombre:
Teniendo:
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Eliminamos la clase
Creamos un JFrame:
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Creamos la siguiente estructura:
Colocamos los siguientes nombres:
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
De los siguientes links descargamos XAMPP y el conector de mysql
XAMPP: https://mega.nz/folder/nAF3BCJA#vjGm2WjiUuX1ecgbFfLaXw
MYSQL: https://mega.nz/folder/SIVTxYxT#IkUAx3FPH82ORHMjKkqmNw
Instalamos XAMPP
Damos clic derecho en libraries
Damos clic en Add Jar/Folder y seleccionamos el conector descargado
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Teniendo:
Inicializamos el XAMPP dando clic en Start en Apache y MySql
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
En el navegador colocamos:
Damos clic en phpMyAdmin
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Damos clic en Nueva y colocamos el siguiente nombre:
Creamos una tabla con 4 campos
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Colocamos los nombres a los campos
Damos clic en guardar:
Llamamos a la librería:
import java.sql.*;
Creamos las siguientes variables:
Connection con1;
PreparedStatement insert;
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Teniendo:
Incluimos los siguientes imports
import java.util.*;
import javax.swing.table.DefaultTableModel;
Creamos la siguiente función:
private void table_update() {
int CC;
try {
Class.forName("com.mysql.jdbc.Driver");
con1 = DriverManager.getConnection("jdbc:mysql://localhost/iit","root","");
insert = con1.prepareStatement("SELECT * FROM record");
ResultSet Rs = insert.executeQuery();
ResultSetMetaData RSMD = Rs.getMetaData();
CC = RSMD.getColumnCount();
DefaultTableModel DFT = (DefaultTableModel) jTable1.getModel();
DFT.setRowCount(0);
while (Rs.next()) {
Vector v2 = new Vector();
for (int ii = 1; ii <= CC; ii++) {
v2.add(Rs.getString("id"));
v2.add(Rs.getString("name"));
v2.add(Rs.getString("studentid"));
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
v2.add(Rs.getString("cource"));
}
DFT.addRow(v2);
}
} catch (Exception e) {
}
}
Teniendo:
En el constructor, colocamos:
public RegistroBDD() {
initComponents();
table_update();
}
Teniendo:
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Damos doble clic en el botón insertar:
Y colocamos el siguiente código:
String name =jTextField1.getText();
String studentId =jTextField2.getText();
String cource =jTextField3.getText();
try {
Class.forName("com.mysql.jdbc.Driver");
con1 = DriverManager.getConnection("jdbc:mysql://localhost/iit","root","");
insert = con1.prepareStatement("insert into
record(name,studentid,cource)values(?,?,?)");
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
insert.setString(1, name);
insert.setString(2, studentId);
insert.setString(3, cource);
insert.executeUpdate();
JOptionPane.showMessageDialog(this,"Record Saved");
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField1.requestFocus();
table_update();
} catch (ClassNotFoundException ex) {
Logger.getLogger(RegistroBDD.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(RegistroBDD.class.getName()).log(Level.SEVERE, null, ex);
}
Teniendo:
Damos doble clic en el botón eliminar
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Colocamos el siguiente código:
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
int selectedIndex = jTable1.getSelectedRow();
try {
int id = Integer.parseInt(model.getValueAt(selectedIndex, 0).toString());
int dialogResult = JOptionPane.showConfirmDialog (null, "Desea eliminar el
registro??","Warning",JOptionPane.YES_NO_OPTION);
if(dialogResult == JOptionPane.YES_OPTION){
Class.forName("com.mysql.jdbc.Driver");
con1 = DriverManager.getConnection("jdbc:mysql://localhost/iit","root","");
insert = con1.prepareStatement("delete from record where id = ?");
insert.setInt(1,id);
insert.executeUpdate();
JOptionPane.showMessageDialog(this, "Record Delete");
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
table_update();
}
} catch (ClassNotFoundException ex) {
} catch (SQLException ex) {
}
Teniendo:
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Damos doble clic en el botón actualizar
Colocamos el siguiente código:
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
int selectedIndex = jTable1.getSelectedRow();
try {
int id = Integer.parseInt(model.getValueAt(selectedIndex, 0).toString());
String name =jTextField1.getText();
String studentId =jTextField2.getText();
String cource =jTextField3.getText();
Class.forName("com.mysql.jdbc.Driver");
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
con1 = DriverManager.getConnection("jdbc:mysql://localhost/iit","root","");
insert = con1.prepareStatement("update record set name= ?,studentid= ?,cource= ?
where id= ?");
insert.setString(1,name);
insert.setString(2,studentId);
insert.setString(3,cource);
insert.setInt(4,id);
insert.executeUpdate();
JOptionPane.showMessageDialog(this, "Record Updated");
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
table_update();
} catch (ClassNotFoundException ex) {
} catch (SQLException ex) {
Teniendo:
Activamos el evento
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
Colocamos el siguiente código:
DefaultTableModel DFT = (DefaultTableModel) jTable1.getModel();
int selectedRow = jTable1.getSelectedRow();
jTextField1.setText(DFT.getValueAt(selectedRow, 1).toString());
jTextField2.setText(DFT.getValueAt(selectedRow, 2).toString());
jTextField3.setText(DFT.getValueAt(selectedRow, 3).toString());
Teniendo:
Compilamos y Ejecutamos:
Ciencias de la Ingeniería
Universidad Israel
Ciencias de la Ingeniería
Carrera de Sistemas de Información
6. BIBLIOGRAFIA:
Ciencias de la Ingeniería