Proyecto Semestral - Mysql & Java

UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL DE VERAGUAS FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y COMUNICACIONES LICENCIATURA EN

Views 177 Downloads 0 File size 115KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL DE VERAGUAS FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y COMUNICACIONES LICENCIATURA EN INGENIERÍA EN INFORMÁTICA PROGRAMACIÓN III

PROYECTO SEMESTRAL Sobre: CONECTIVIDAD DE BASES DE DATOS EN JAVA

Presentado por: Carlos J. De Gracia R.

9-721-393

Facilitador: Profesor Diego Santimateo

II Año II Semestre

15 de diciembre de 2006

MySQL & Java _____________________________________________________________ INTRODUCCIÓN Las bases de datos son muy importantes. Sin ellas, los bancos, supermercados,

etcétera,

no

podrían

funcionar.

Además

de

muchas

aplicaciones actuales, las bases de datos pueden considerarse como el componente de software mas importante para los negocios. Actualmente, la mayoría de las bases de datos se definen como “relacionales”. Los datos se guardan en tablas que pueden estar relacionadas entre si. Casi todas las bases de datos pueden utilizarse en forma local, ya sea mediante comandos de menú o consultas escritas, en un lenguaje estándar conocido como SQL(Lenguaje de Consultas Estructurados o en ingles, Structured Query Language). En empresas mas extensas a menudo se cuenta con una base de datos central utilizada por un gran numero de personas, que por lo general son de distintos países y utilizan distintos tipos de computadoras. JDBC(Conectividad de Bases de Datos en Java , o en ingle, Java DataBase Connectivity) permiten que una aplicación o applet de Java se ejecute en un equipo de escritorio para enviar consultas de SQL a una base de datos que se encuentran en otro equipo. Después se regresan los resultados. El desarrollo de este proyecto hace énfasis en la investigación, análisis y experimentación de los conceptos ligados al tema de la conectividad de bases de datos en Java.

2 Programación III

MySQL & Java _____________________________________________________________ El contenido de este documento está estructurado de la siguiente forma: en una primera parte se presentará una adecuada fundamentacion teórica con respecto al tema de conectividad de bases de datos en Java. En un segundo punto, se presentará una breve, pero significante metodología de diseño del desarrollo de una base de datos. Como tercer punto, se presentará la estructuración de aplicación a desarrollar, así como la respectiva documentación que se vincula con el código del programa. Finalmente se presentarán las conclusiones y recomendaciones referentes al desarrollo del proyecto.

3 Programación III

MySQL & Java _____________________________________________________________ PROBLEMA PROPUESTO

4 Programación III

MySQL & Java _____________________________________________________________ FUNDAMENTACION TEÓRICA JDBC (Java Data Base Conectivity) es un API de Java para acceder a sistemas de bases de datos, y prácticamente a cualquier tipo de dato tabular. El API JDBC consiste de un conjunto de clases e interfaces que permiten a cualquier programa Java acceder a sistemas de bases de datos de forma homogénea. En otras palabras, con el API JDBC no es necesario escribir un programa para acceder a Sybase, otro programa para acceder a Oracle, y otro programa para acceder a MySQL; con esta API, se puede crear un sólo programa en Java que sea capaz de enviar sentencias SQL a la base de datos apropiada. Al igual que ODBC, la aplicación de Java debe tener acceso a un controlador ( driver ) JDBC adecuado. Este controlador es el que implementa la funcionalidad de todas las clases de acceso a datos y proporciona la comunicación entre el API JDBC y la base de datos real. JDBC proporciona a los programadores de Java una interfaz de alto nivel y les evita el tener que tratar con detalles de bajo nivel para acceder a bases de datos. En el caso del manejador de bases de datos MySQL, Connector/J es el controlador JDBC oficial. El desarrollo de este informe cuenta con una detallada descripción de las clases y métodos que están involucrados en la conexión y consulta de una base de datos MySQL utilizando el lenguaje de programación Java. Este trabajo está organizado de la siguiente forma: en una primera parte se dará un repaso sobre el funcionamiento del paquete java.sql, asi como una detallada descripción de lo que contiene el paquete y como segunda parte se detallarán las clases contenidas en el paquete, asi como sus respectivos métodos. Para finalizar se plasman las conclusiones de este informe, asi como una pequeña referencia electrónica a sitios de mucho interés en el tema. 5 Programación III

MySQL & Java _____________________________________________________________ El paquete java.sql proporciona el API para tener acceso y procesar datos en una fuente de datos usando el lenguaje de programación Java. Este API incluye un marco por el que diversos controladores se puedan instalar dinámicamente para tener acceso a diversas fuentes de datos.

6 Programación III

MySQL & Java _____________________________________________________________ METODOLOGÍA DE DISEÑO DE BASE DE DATOS



DESCRIPCIÓN DEL PROBLEMA Crear una aplicación Java que a partir de archivos de textos, genere una

base de datos MySQL, que permita realizar consultas de las calificaciones de estudiantes, mediante la cedula, indicando el porcentaje de asignaturas fracasadas. La aplicación debe permitir la corrección de los detalles de una asignatura o de un determinado profesor. •

ESTABLECER IDENTIDADES Atendiendo a una serie de reglas generales que ayudan a determinar las

relaciones, entidades o clases de objetivos, implicados en la aplicación, podemos observar que dentro del dominio del problema se pueden establecer tres entidades principales.

-

ESTUDIANTES

-

ASIGNATURAS

-

PROFESORES

ESTUDIANTES

ASIGNATURAS

PROFESORES

0..n



impartir

0..1

DETERMINAR ASOCIACIONES Según los alcances de la aplicación, se determina que un profesor puede

tener varias asignaturas. Es aquí donde se crea la asociación entre entidades PROFESORES y ESTUDIANTES, ya que un profesor puede impartir varias asignaturas, pero una asignatura solo esta asignada a un solo profesor. Es con esto que conseguimos la cardinalidad, así mismo existe una asociación entre las entidades ESTUDIANTES y ASIGNATURAS. A la asociación se le 7 Programación III

MySQL & Java _____________________________________________________________ llamara recibir, ya que un estudiante puede recibir algunas asignaturas, pero una asignatura puede tener varios estudiantes. ESTUDIANTES

ASIGNATURAS

1...n



recibir

1...6

PROFESORES

1..n

1 impartir

DETERMINAR ATRIBUTOS Esta aplicación, se han pedido definir los siguientes atributos. 

Código - asignatura para la entidad ESTUDIANTE.



Cedula para la entidad ESTUDIANTE.



Nota para la entidad ESTUDIANTE.



Código - curso para la entidad ASIGNATURA.



Código – asignatura para la entidad ASIGNATURA.



Abreviatura para la entidad ASIGNATURA.



Descripción para la entidad ASIGNATURA.



Código – profesor para la entidad PROFESOR.



Nombre para la entidad PROFESOR.



Apellido para la entidad PROFESOR.

8 Programación III

MySQL & Java _____________________________________________________________ ESTRUCTURACIÓN DEL PROGRAMA //CLASE PRINCIPAL QUE PERMITE REALIZAR LAS OPERACIONES //DE INSERCION, CONSULTA Y MODIFICACION class Principal { public static void main (String[] args) { //men obtiene el valor de la opcion seleccionada MenuOpciones men= new MenuOpciones(); InsertaDatosEnLaTabla agregar=new InsertaDatosEnLaTabla(); SeleccionaDatosDeTabla seleccion=new SeleccionaDatosDeTabla(); ActualizarDatos modificar=new ActualizarDatos(); int bandera=0; int opcion=0; while (bandera==0) { opcion=men.menuPrincipal(); switch (opcion) { case 1: //accede al metodo que permite //insertar los datos en la base de datos agregar.ingresarDatos(); break; case 2: //accede al metodo permite consultar //los datos de la tabla calificaciones seleccion.consultarCalificaciones(); break; case 3: //accede al metodo que permite modificar //datos de la tabla profesores modificar.actualizarProfesores(); break; case 4: //accede al metodo que permite //modificar los datos de asignatura modificar.actualizarAsignaturas(); break; case 5: 9 Programación III

MySQL & Java _____________________________________________________________ //bandera variable que termina //el ciclo de opciones bandera=1; break; } } } } import java.io.*; import java.sql.*; //clase que contien el menu de opciones public class MenuOpciones { CapturaeImpresion mensaje=new CapturaeImpresion(); String msg="****************Ingrese la Opcion**************** "; public int menuPrincipal() { int opcion=0; try { System.out.println("\n\n----------------------------------------------------"); System.out.println("*** UNIVERSIDAD DE PANAMA ***"); System.out.println("----------------------------------------------------"); System.out.println("(1). Ingresar datos "); System.out.println("(2).

Consulta de calificaciones

System.out.println("(3).

Actualizar datos del profesor

System.out.println("(4).

Actualizar datos de asignatura

System.out.println("(5).

Salir

"); "); "); "); System.out.println("----------------------------------------------------"); System.out.println("----------------------------------------------------"); opcion=Integer.parseInt(mensaje.obtenerdatos(msg)); 10 Programación III

MySQL & Java _____________________________________________________________ } catch (Exception e) { System.out.println("Error debe digitar una de las opciones"); } return opcion; } } import java.sql.*; //clase que permite crear las tablas en la base de datos public class CreaTabla { public static void main (String[] args) { Connection conn = null; try { //datos necesarios para la conexion String userName = "FIEC-02"; String password = "estudiante"; String url = "jdbc:mysql://serfiec:3306/prueba"; Class.forName ("com.mysql.jdbc.Driver").newInstance (); conn = DriverManager.getConnection (url, userName, password); System.out.println ("Coneccion Database OKKK!!!"); try { Statement s = conn.createStatement (); String tabla1,tabla2,tabla3; //sentencias para la creacion de tablas tabla1 ="CREATE TABLE cdprofesores(codigo_profesor char(10), nombre char(40), apellido char(40))"; tabla2 ="CREATE TABLE cdasignaturas(codigo_curso char(10), codigo_asignatura char(10), abreviatura char(10), descripcion varchar(40), codigo_profesor char(10))"; tabla3 ="CREATE TABLE cdestudiantes(codigo_asignatura char(10), cedula char(40), nota char(5))"; s.executeUpdate(tabla1); s.executeUpdate(tabla2); s.executeUpdate(tabla3); s.close (); 11 Programación III

MySQL & Java _____________________________________________________________ System.out.println ("\n Tablas Creadas"); } catch (Exception e) { System.err.println ("Problemas con Creacion de la Tabla\n"+e.toString()); } } catch (Exception e) { System.err.println ("No puede conectarse al Servidor Mysql"+e.toString()); } finally { if (conn != null) { try { conn.close (); System.out.println ("\n !!!!!Cerrada la coneccion a Mysql"); } catch (Exception e) { /* sin mensajes de error */ } } } } } import java.io.*; import java.util.*; import java.sql.*; //clase que permite insertar datos en la tabla class InsertaDatosEnLaTabla { public void ingresarDatos( ) { Connection conn = null; try { String userName = "FIEC-03"; String password = "fiecest"; String url = "jdbc:mysql://serfiec:3306/prueba"; Class.forName ("com.mysql.jdbc.Driver").newInstance (); 12 Programación III

MySQL & Java _____________________________________________________________ conn = DriverManager.getConnection (url, userName, password); System.out.println ("Coneccion Database OKKK!!!"); try { Statement s = conn.createStatement (); StringTokenizer token; FileReader datos=new FileReader("2006PRIMERO.txt"); BufferedReader entrada=new BufferedReader(datos); int i=0; String linea; do { String codigocurso=""; String codasig1=""; String codasig2=""; String nombreasig=""; String nombreprof=""; String codprof=""; String segundonombre=""; String primernombre=""; int flag=0; token=new StringTokenizer(linea=entrada.readLine()); while (token.hasMoreTokens()) { if (token.nextToken().equals("FACULTAD")) { token.nextToken(); token.nextToken(); if (token.nextToken().equals("ARQUITECTURA.")) { flag=1; } } } if (flag==1) { linea=entrada.readLine(); /*---------------------------------------------------------*/ 13 Programación III

MySQL & Java _____________________________________________________________ i=0; while (i