0% encontró este documento útil (0 votos)
22 vistas16 páginas

Guia Java Con Base de Datos-Semestre 2024-II

Muy útil para programar

Cargado por

Melvin Ledezma
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas16 páginas

Guia Java Con Base de Datos-Semestre 2024-II

Muy útil para programar

Cargado por

Melvin Ledezma
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

Proyecto de Java

En este semestre se continuará trabajando con java, especialmente la interfaz


gráfica y conexión a la base de datos mysql.

En este aspecto, las evaluaciones del semestre se distribuirán de la siguiente


manera
I CORTE: Plan de trabajo, análisis y diseño. Modelado de base de datos con
sus respectivas relaciones entre las tablas pertinentes. (25%=5pts)
II CORTE: Conexión a la base de datos. Diseño de la interfaz gráfica.
(25%=5pts)
III CORTE: Codificación (producción del prototipo). (25%=5pts)
IV CORTE: pruebas y entrega del prototipo. ((25%=5pts)

Para poder trabajar con la interfaz gráfica, debe descargar para eclipse el
componente windowbuilder de java e instalarlo a su programa. Otra opción es que
instale en su máquina el programa netBeans que ya tiene la interfaz gráfica
agregada o visualStudio el cual deberá descargar las librerías que requiera.

Adicionalmente debe descargar los drivers de mysql para java. Debe revisar
la versión de equipo para descargar la adecuada. Configurar y probar que se ejecute
la conexión desde java a mysql.

I corte: 21-10-2024 al 26-10-2024


II corte: 18-11-2024 al 23-11-2024
III Corte: 09-12-2024 al 14-12-2024
IV Corte: 03-02-2025 al 07-02-2025
Lectura complementaria para trabajar con bases de datos en java

Hay tres tipos de bases de datos, bases de datos relacionales, base de datos
relacionales-objetos y bases de datos orientadas a objetos. En esta lectura se
explicará brevemente el uso de la base de datos relacional, queda de parte del
estudiante profundizar la información.

Ya que no se puede encontrar un denominador común para el requerimiento


y acceso de datos entre los tres tipos de bases de datos, la especificación del JDBC
permite requerimientos no específicos en el DBMS (DataBase Management
System) subyacente. En lugar de colocar requerimientos de cómo se debe
implementar el DBMS para poder usar con programas java, la especificación JDBC
coloca todos sus requerimientos en la implementación específica del JDBC. Se
requiere que todas las implementaciones JDBC soporten por lo menos el nivel
básico ANSI SQL-2.

Al escribir programas en java que se comunican con un base de datos, los


siguientes requerimientos son esenciales:

• Una base de datos relacional


• Interfaz java (a través del API de JDBC)
• Conocimiento básico de sentencias SQL.

Pasos involucrados en el accedo a base de datos

Cuando se habla de acceso a una base de datos, hay dos operaciones que un
programa java puede ejecutar.

• Leer datos de una base de datos.


• Escribir a una base de datos

Sin embargo, un programa java es una entidad externa, residiendo fuera del
sistema manejador de base de datos. ¿Cómo se hace para que nuestros programas
ejecuten estas tareas? Para que esas operaciones se puedan ejecutar, debe existir
una conexión entre el programa java y el sistema de base de datos. Dado que hay
diferentes tipos de base de datos, la conexión dependerá del tipo de controlados de
base de datos provisto por el vendedor del sistema de base de datos. De esta
manera, se ve que hay una serie de pasos que deben seguirse para acceder a los
datos de una base de datos. Estos pasos son los siguientes:

• Cargar en la memoria un controlador que habilitara la conexión entre el


programa java y el sistema de base de datos.
• Establecer una conexión con la base de datos a través del controlador.
• Ejecutar sentencias SQL usando la conexión establecida.
• Cerrar la conexión.

A continuación, se verá cómo el API de JDBC API ayuda a conectarse a


bases de datos.

El API JDBC

Para trabajar con JDBC, se necesita importar las clases e interface del
paquete java.sql. Las siguientes clases e interfaces permiten realizar accesos
simples a base de datos.

• java.sql.DriverManager
• java.sql.Driver
• java.sql.Connection
• java.sql.Statement
• java.sql.ResultSet

Estas son las cinco clases e interfaces básicas que se encuentran en cualquier
programación de base de datos que involucra JDBC. Hay cuatro clases/interfaces
que permiten realizar una programación sofisticada de base de datos. Ellas son:

• java.sql.ResultSetMetaData
• java.sql.DatabaseMetaData
• java.sql.PreparedStatement
• java.sql.CallableStatement
• DriverManager carga el controlador requerido directamente.
• La aplicación usa DriverManager para establecer conexiones a base de
datos
• Driver crea conexiones internamente .
• La aplicación usa el objeto Connection para obtener objetos Statement.
• Los conjuntos resultados se reciben de los objetos Statement mediante la
aplicación.
• La aplicación obtiene datos del objeto ResultSet.
• El objeto Connection se relaciona al objeto DatabaseMetaData
• PreparedStatament hereda de Statement.
• CallableStatement hereda de PreparedStatement

Tipos de controladores JDBC

• Controlador JDBC-ODBC (Tipo 1)


• Controlador API-Nativo (Tipo 2)
• Controlador de Protocolo Red (Tipo 3)
• Controlador Protocolo-Nativo (Tipo 4)

Cargar el controlador

Los fabricantes de sistemas de base de datos proveen sus propios


controladores para poder conectarse con la base de datos. Por ejemplo, para
trabajar con IBM UDB DB2, se necesita el DB2Driver.Para trabajar con
Microsoft Access o Microsoft SQL, se usa el jdbcOdbcDriver. Para
MYSQL se usa Connector/J(Driver) y para PostgreSQL, se usa
JDBCdriver(Driver). Para cargar el controlar, se necesita usar el método
forName en la clase Class con el nombre del controlar como argumento. La clase
nativa Class se define como una clase public y final. No tiene constructores
public. Los objetos de Class representan clases e interfaces de una aplicación
Java en ejecución. Los objetos de Class son construidos automáticamente por la
JVM cuando se cargan las clases, y por las llamadas al método defineClass en
el cargador de clases.

Hacer una conexión

Se explicó anteriormente que la aplicación usa la clase DriveManager para


establecer la conexión con DBMS. La clase DriverManager es responsable de
buscar o rastrear las diferentes implementaciones JDBC que puedan existir en un
sistema. La aplicación requiere que DriverManager le dé una conexión de base
de datos. La clase DriveManager provee un método llamado getConnection().
Este método tiene tres argumentos:

• Un URL de la base de datos.


• Identificación de usuario (login ID).
• Clave de usuario.

Un URL de la base de datos es un simple Localizador Uniforme de Recursos


estándar de Internet. Consiste de tres partes, separadas por dos puntos:
protocol:<subprotocol>:<subname>

Un ejemplo típico de un URL de base de datos es:


jdbc:odbc:Sample

Aquí,
jdbc es el protocol
odbc es el subprotocol
Sample es el subname

Para trabajar con MS Access, no se requiere de un nombre de usuario y una


clave, pero para trabajar con MS SQL. BD2, MYSQL y PostgreSQL se debe
obtener un nombre de usuario (login) y una clave del Administrador de base de
Datos (DBA). Para hacer una conexión, simplemente se usa el método
getConnection() como sigue:

MS Access

Connection conn;
String databaseURL = “jdbc:odbc:Sample”;
Conn = DriverManager.getConnection(databaseURL, “”, “”);

MS SQL Server

Connection conn;
String databaseURL = “jdbc:odbc:Sample”;
Conn = DriverManager.getConnection(databaseURL, “user”,
“password”);

IBM UDB DB2

Connection conn;
String databaseURL = “jdbc:db2://COM:8000/Sample”;
Conn = DriverManager.getConnection(databaseURL, “user”,
“password”);

MYSQL

Connection conn;
String databaseURL = “jdbc:mysql://COMP:8000/Sample”;
Conn = DriverManager.getConnection(databaseURL, “user”,
“password”);
PostgreSQL

Connection conn;
String databaseURL = jdbc:postgresql://COMP:8000/Sample”;
Conn = DriverManager.getConnection(databaseURL, “user”,
“password”);

Crear objetos Statement

Una vez establecida una conexión usando el método getConnection() de


DriverManager se puede crear una sentencia SQL. Una sentencia normalmente
es una de las siguientes:

• UPDATE
• INSERT
• DELETE
• SELECT

EJEMPLO COMPLETO JDBC

En este ejemplo se usaran tres tablas en una base de datos llamada Sample
en IBM UDB DB2..

Las tablas usadas en el ejemplo son las siguientes:

• Una tabla que guarda información acerca de productos


• Una tabla que guarda información acerca de proveedores de productos
• Una tabla que guarda información acerca de los productos que vende un
proveedor.

Nombre de la base de datos: Sample


Usuario: db2admin
Clave: 123
Nombre de la tabla: Producto
nombre de columna tipo de dato longitud
Pid int 4
Pnombre varchar 200
Pprecio float 8
Pcolor varchar 10
Nombre de la tabla: Proveedores
nombre de columna tipo de dato longitud
Sid int 4
Snombre varchar 100
Sregion varchar 50
Sdescripcion varchar 250

Nombre de la tabla: Producto-proveedores


nombre de columna tipo de dato longitud
Pid int 4
Sid int 4
cantidad int 4

/* El código java comienza aquí */

/* importar paquetes */
import java.sql.*;

/* Definición de la clase DBAcceso */


Class DBAacceso{

Connection conn;
Statement stmt;

/* Constructor DBAcceso comienza aquí */

DBAacceso() throws SQLException,ClassNotFoundException{


//obtener conexión a base de datos
Class.forName(“COM.ibm.db2.jdbc.app.DB2Driver”);

/* para MySQL sería


Class.forName(“com.mysql.Driver”); */
/* para postgresSQL sería
Class.forName(“org.postgresql.Driver”); */

Con = DriverManager.getConnection(“jdbc:db2:Sample”,
“db2admin”, “123”);
/* para MySQL sería
Con =
DriverManager.getConnection(“jdbc:mysql://localhost/Sample”,
“db2admin”, “123”); */

/* para postgresSQL sería


Con =
DriverManager.getConnection(“jdbc:postgresql:Sample”,
“db2admin”, “123”); */

Stmt = conn.createStatement();

}//fin constructor

/* método insertar datos comienza aqui */

void insertarDatos() throws SQLException{

//insertar datos en la tabla


//insertar datos en la tabla productos

stmt.executeUpdate(“INSERT INTO Producto ” +


“(Pid, Pnombre, Pprecio, Pcolor)” +
“VALUES(1000, ‘lapiz’, 44.50, ‘Azul’)”);

stmt.executeUpdate(“INSERT INTO Producto ” +


“(Pid, Pnombre, Pprecio, Pcolor)” +
“VALUES(1001, ‘Regla’, 4.00, ‘Rosada’)”);

//insertar datos en la tabla proveedores


stmt.executeUpdate(“INSERT INTO Proveedores ” +
“(Sid, Snombre, Sregion, Sdescripcion)” +
“VALUES(100, ‘ACME’, ‘Londres’, “ +
“‘Solo venta de productos de papel’)”);

stmt.executeUpdate(“INSERT INTO Proveedores ” +


“(Sid, Snombre, Sregion, Sdescripcion)” +
“VALUES(101, ‘LA NACIONAL’, ‘Caracas’, “ +
“‘venta de todo tipo de papeleria’)”);
//insertar datos en la tabla producto-proveedores

stmt.executeUpdate(“INSERT INTO Producto-proveedores ” +


“(Pid ,Sid, cantidad)VALUES(1000, 101, 500)”);

}//fin insertarDatos

/*para consultar datos desde la base de datos */

void consultarDatos() throws SQLException{


ResultSet rs;
Stmt = con.createStatement();
rs = stmt.executeQuery(“SELECT * FROM Producto”);
System.out.println(“Tabla productos…\n”);
while(rs.next()){
System.out.println(rs.getInt(1) + “ ” +
Rs.getString(2) + “ “ + rs.getFloat(3) +
“ “ + rs.getString(4));
}//fin while

rs =stmt.executeQuery(“SELECT * FROM Proveedores”);


System.out.println(“Tabla proveedores…\n”);

while(rs.next()){
System.out.println(rs.getInt(1) + “ ” +
Rs.getString(2) + “ “ + rs.getString(3) +
“ “ + rs.getString(4));
}//fin while

rs = stmt.executeQuery(“SELECT * FROM Producto-


Proveedores”);
System.out.println(“\n”);

System.out.println(“Tabla producto-proveedores\n”);

while(rs.next()){
System.out.println(rs.getInt(1) + “ ” +
Rs.getInt(2) + “ “ + rs.getInt(3));
}//fin while

System.out.println(“\n”);
rs.close();

}//fin consultarDatos

/*para actualizar datos la base de datos */

void actualizarDatos() throws SQLException{


int nFilas;
stmt = conn.createStatement();
nFilas = stmt.executeUpdate(“UPDATE producto SET
pcolor = ‘Rojo’ WHERE pcolor = ‘azul’”);
System.out.println(“Numero de filas afectadas: ”
+ nFilas + “\n”);
stmt.close();
}//fin actualizarDatos
int nFilas;
stmt = conn.createStatement();
nFilas = stmt.executeUpdate(“DELETE FROM product-
proveedores WHERE Sid=101”);
System.out.println(“Numero de filas afectadas: ”
+ nFilas + “\n”);
stmt.close();

/*para borrar registros en la base de datos */

void borrarDatos() throws SQLException{

}//fin borrarDatos

}//fin clase

/*Definición de la clase DBEjemplo comienza aquí */

Class DBEjemplo{
public static void main(String[]arg){
try{
DBAcceso dba = new DBAcceso();
dba.insertarDatos();
dba.consultarDatos();
}//fin bloque try
catch(SQLException e){
System.out.println(e);
}//fin catch SQLException
catch(Exception e){
System.out.println(e);
}//fin catch Exception

}//fin main

}/fin clase

Con este ejemplo puede guiarse par realizar su proyecto. Recuerde


documentarse ya que en el ejemplo suministrado el CRUD (INSERT-DELETE-
UPDATE-SELECT) se realiza desde el código y no desde teclado como debe
funcionar su programa.
Problema:

El problema que se va a resolver consiste en elaborar un software o editor en


java para aprender a trabajar con las estructuras de control: if-else,
switch..case, while,do..while y for. Dicho software, debe permitir al
usuario escribir un seudocódigo e ir generando simultáneamente el diagrama de
flujo según la estructura de control que este ejecutando al momento.

Para que un usuario pueda acceder a la aplicación, lo primero que debe hacer
es registrarse en el sistema, por lo que deberá poseer una ventana de LOGIN (con
los campos básicos como usuario y contraseña) y otra ventana donde el usuario
pueda registrarse cuando desea trabajar con la aplicación. En estas ventanas, es
donde Ud. trabajará el CRUD (Create-Read-Update-Delete). Una vez registrado, el
usuario podrá crear sus proyectos para aprender a trabajar con las estructuras de
control que así requiera.

Es importante señalar, que el usuario podrá guardar en su sesión de trabajo


todos sus proyectos realizados.

Requerimientos:
Software: Java + MySQL (puede usar el servidor que mejor le funcione)

¿Cómo se debe realizar el ingreso de los datos?


El programa inicia con la ventana de sesión o login para que el usuario escriba
su usuario y contraseña. En caso que no esté registrado, debe acceder al enlace o
botón de registro y rellenar el formulario con los datos requeridos según su diseño.
El sistema no puede permitir datos null a la base de dato.

Una vez que el usuario ha iniciado su sesión, se habilitará la interfaz para que
pueda trabajar con el editor con la estructura de control que elija. Allí podrá
guardarla, para que pueda tener un registro de su progreso o seguir practicando en
otro momento, sin tener que comenzar desde cero la práctica. La idea es que el su
prototipo pueda ayudar a los estudiantes de programación a comprender como se
ejecutan las distintas estructuras de control y observar a medida que escribe el
seudocódigo, el diagrama que va generando su algoritmo.

SE PIDE:

1. Diseñe las tablas normalizadas en MySQL, según los campos suministrados


en el problema.
2. Diseñe las interfaces solicitadas en java. Trabaje con el modelo-Vista-
Controlado (MVC).
3. Establezca la conexión a la base de datos.
4. Realice todo el CRUD (CREATE-READ-UPDATE-DELETE) desde java a
MySQL
5. Su programa debe tener ajustarse a lo solicitado en el planteamiento del
problema y tener todos sus campos validados.

EXITOS EN ESTA NUEVA ETAPA.


ESCALA DE ESTIMACION PARA EVALUAR EL PROYECTO

Criterio Descripción Puntación


obtenida
Planificación Excelente (18-20 Bueno (14-17 Aceptable (10-13 Insuficiente (0-9
20% puntos): El plan de puntos): El plan de puntos): El plan de puntos): El plan de
proyecto está proyecto está bien proyecto es básico, con proyecto es incompleto o
completamente desarrollado, con objetivos y cronograma inexistente, con objetivos
desarrollado, incluye objetivos claros y un generales. La asignación poco claros y sin
objetivos claros, cronograma adecuado. de recursos es mínima cronograma detallado
cronograma detallado, La asignación de
asignación de recursos, recursos es aceptable,
La documentación es aunque podrían
profesional y exhaustiva. mejorarse
Análisis de Excelente (18-20 Bueno (14-17 Aceptable (10-13 Insuficiente (0-9
Requisitos puntos): Los requisitos puntos): Los requisitos puntos): Los requisitos puntos): Los requisitos
(20%) del software están están bien definidos y están definidos de son vagos, mal
claramente definidos, documentados, aunque manera general, con documentados o no
documentados y falta alguna validación documentación básica y validados.
validados con los con los stakeholders. poca validación.
stakeholders. Incluye
tanto requisitos
funcionales como no
funcionales.
Diseño del Excelente (18-20 Bueno (14-17 Aceptable (10-13 Insuficiente (0-9
Software (20%) puntos): El diseño del puntos): El diseño es puntos): El diseño es puntos): El diseño es
software es detallado, adecuado, con básico, con algunos incompleto o inexistente,
incluye diagramas UML diagramas UML y una diagramas UML y una con poca o ninguna
completos (clases, arquitectura funcional, arquitectura funcional documentación
secuencia, etc.), y sigue aunque podría mejorarse mínima.
principios de diseño de en detalle y
software. La arquitectura escalabilidad.
es robusta y escalable.
Implementación Excelente (18-20 Bueno (14-17 Aceptable (10-13 Insuficiente (0-9
(20%) puntos): El código es puntos): El código es puntos): El código es puntos): El código es
limpio, bien funcional y bien funcional, pero carece de incompleto, mal
documentado, y sigue las documentado, aunque documentación adecuada
mejores prácticas de podría mejorarse en y no sigue todas las documentado o no
programación. Se utilizan términos de limpieza y mejores prácticas. funcional.
patrones de diseño uso de patrones de
apropiados y el software diseño
es completamente
funcional.

Pruebas y Excelente (18-20 Bueno (14-17 Aceptable (10-13 Insuficiente (0-9


Validación puntos): Se han puntos): Se han puntos): Se han puntos): Las pruebas son
(20%) realizado pruebas realizado pruebas realizado pruebas insuficientes o
exhaustivas (unitarias, adecuadas, aunque no básicas, con inexistentes, y no se ha
integración, sistema) y se exhaustivas. La documentación mínima. realizado validación con
ha validado el software validación con usuarios La validación con usuarios finales.
con los usuarios finales. finales es limitada. usuarios finales es
Los resultados de las escasa.
pruebas están bien
documentados.

Presentación y Excelente (18-20 Bueno (14-17 Aceptable (10-13 Insuficiente (0-9


Documentación puntos): La puntos): La puntos): La puntos): La
(20%) presentación del presentación es clara y presentación es básica y presentación es
proyecto es profesional, bien estructurada, la documentación es desorganizada o
clara y bien estructurada. aunque podría mejorarse mínima. inexistente, y la
Toda la documentación en algunos aspectos. La documentación es
(manuales de usuario, documentación es insuficiente o falta.
documentación técnica) adecuada pero
está completa y bien incompleta.
organizada

También podría gustarte