archivos y bases de datos - universidad de el...

19
UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS PROGRAMACION III ARCHIVOS Y BASES DE DATOS

Upload: others

Post on 16-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

UNIVERSIDAD DE EL SALVADOR

ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS

PROGRAMACION III

ARCHIVOS Y BASES DE DATOS

Page 2: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

1

Contenido Contenido .................................................................................................................................................. 1

Manejo de archivos ................................................................................................................................... 2

Ejemplo ................................................................................................................................................. 2

Ejercicios ............................................................................................................................................... 9

Sentencias DML y DDL .......................................................................................................................... 10

Lenguaje de definición de datos (DDL) .............................................................................................. 10

Lenguaje de manipulación de datos (DML) ....................................................................................... 10

Creación de Tabla y datos en Postgres SQL(pgAdmin). .......................................................................... 11

Conexión al Servidor ........................................................................................................................... 11

Prueba de comandos DML .............................................................................................................. 13

Anexos ................................................................................................................................................ 15

Anexo 1 Conexión Local al usuario postgres(o Servidor Local) ........................................................ 15

Anexo 2 Instalación ............................................................................................................................ 16

Anexo 3 Conexión Local a su usuario(o Servidor Local) ................................................................... 18

Page 3: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

2

Manejo de archivos

Ejemplo

Realizaremos un ejemplo sobre cómo crear un archivo de texto, escribir en él y luego leer su contenido.

Nombre: Crear archivo de texto

Autor: PRN315

Descripción: Crear un archivo de texto e ingresar 3 líneas como contenido

Actores: Usuario

Precondiciones:

Flujo normal de los eventos:

1. El Usuario inicia el programa.

2. El sistema despliega una pantalla en la que el indicará la ruta y nombre del archivo que desea crear.

3. El selecciona la ruta y escribe el nombre del archivo.

4. El sistema muestra una secuencia de tres mensajes de captura de datos en la que el Usuario escribirá el

contenido que desea guardar en el archivo.

Flujos alternativos:

4. No fue posible crear el archivo. El sistema muestra el mensaje: Error al intentar abrir el archivo.

Postcondiciones:

Para resolver este problema primero debemos saber lo que debemos hacer para mostrar una ventana para Abrir un archivo.

La clase JFileChooser nos permite desplegar este tipo de ventanas.

Los constructores y los métodos de dicha clase las encontramos al consultar el API de Java.

Page 4: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

3

Constructores

JFileChooser()

Construye un JFileChooser (selector de archivos) que se posicionará en el directorio por defecto del usuario.

JFileChooser(File currentDirectory)

Construye un JFileChooser que se posicionará en la ruta del archivo recibido como parámetro.

Métodos relevantes

void cancelSelection()

Invocado por la Interfaz de usuario (UI) cuando el usuario hace clic en el botón Cancelar.

protected JDialog createDialog(Component parent)

Crea y retorna un nuevo objeto JDialog que será desplegado en el centro del componente recibido

como parámetro.

File getSelectedFile()

Devuelve el archivo seleccionado.

File[] getSelectedFiles()

Devuelve un arreglo de archivo seleccionados, si el selector de archivo ha sido configurado para

permitir selecciones múltiples.

void setDialogTitle(String dialogTitle)

Asigna la cadena recibida comoparámetro como título de la ventana mostrada por el selector de

archivos.

void setFileFilter(FileFilter filter)

Asigna el filtro de archivos recibido.

int showOpenDialog(Component parent)

Provee de una ventana de selección de archivo del tipo “Abrir archivo”

int showSaveDialog(Component parent)

Provee una ventana de almacenamiento de archivos del tipo “Guardar archivo”.

Podemos usar algunos de estos métodos para mostrar una ventana de selección de archivo, que nos permitirá crear el

archivo en el disco duro, y devolvernos la referencia al mismo para su manipulación.

Nótese que es posible asignar un filtro de archivo a la ventana. Esto servirá para asegurarnos que los archivos

seleccionados/creados, sean de este formato.

El filtro de archivos puede ser creado con la clase FileNameExtensionFilter, que permite definir un filtro para las

extensiones de los nombres de archivo. Al consultar el API de Java, encontramos que esta clase tiene las siguientes

características:

Page 5: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

4

Lista de constructores

FileNameExtensionFilter(String description, String extensions)

Crea un Filtro de extensiones de nombres de archivos con la descripción especificada y la extensión del nombre del archivo..

El objeto archivo de tipo File, es la referencia que tenemos al archivo creado en el disco. Nos interesa ahora encontrar una

forma de escribir los datos en el archivo.

Al consultar el API de Java, encontraremos la clase PrintWriter, que entre otras operaciones, permite escribir los datos en un

archivo.

Constructores

PrintWriter(File file)

Crea un nuevo objeto de escritura/impresión, sin un control de flujo de línea automático, para el archivo recibido como

public class EjemploArchivo {

public static void main(String[] args) {

JOptionPane.showMessageDialog(null, "Iniciaremos escribiendo un archivo.\nNombre el archivo con su número de carnet");

escribirArchivo();

}

public static void escribirArchivo() {

JOptionPane.showMessageDialog(null, "Ejemplo crear archivo");

//Se crea el filtro de archivos

FileNameExtensionFilter filtro = new FileNameExtensionFilter("Archivos de texto", "txt");

//El objeto Swing que mostrará la ventana para seleccionar el archivo

JFileChooser seleccionador = new JFileChooser();

seleccionador.setFileFilter(filtro);

seleccionador.setDialogTitle("Abrir");

//Muestra la ventana de diálogo

seleccionador.showOpenDialog(null);

if (seleccionador.getSelectedFile() != null) {

File archivo = seleccionador.getSelectedFile();

}

}

Page 6: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

5

parámetro.

PrintWriter(String fileName)

Crea un nuevo objeto de escritura/impresión sin control de flujo de línea automático ,para el archivo recibido como parámetro.

Métodos relevantes

void close()

Cierra el stream y libera cualquier recurso del sistema asociado a él.

void println(long x)

Imprime (en el archivo) el dato de tipo long recibido como parámetro y termina la línea.

void println(Object x)

Imprime (en el archivo) el dato recibido como parámetro y termina la línea.

void println(String x)

Imprime (en el archivo) el dato recibido como parámetro y termina la línea.

public static void escribirArchivo() {

JOptionPane.showMessageDialog(null, "Ejemplo crear archivo");

//Se crea el filtro de archivos

FileNameExtensionFilter filtro = new FileNameExtensionFilter("Archivos de texto", "txt");

//El objeto Swing que mostrará la ventana para seleccionar el archivo

JFileChooser seleccionador = new JFileChooser();

seleccionador.setFileFilter(filtro);

seleccionador.setDialogTitle("Abrir");

//Muestra la ventana de diálogo

seleccionador.showOpenDialog(null);

if (seleccionador.getSelectedFile() != null) {

File archivo = seleccionador.getSelectedFile();

PrintWriter flujoSalida = null;

Page 7: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

6

De igual forma, ahora podemos resolver el caso de uso para leer cualquier archivo de texto.

Nombre: Consultar contenido de archivo

Autor: PRN315

Descripción: Consultar el contenido de un archivo de texto

Actores: Usuario

Precondiciones:

Flujo normal de los eventos:

1. El Usuario inicia el programa.

2. El sistema despliega una pantalla en la que el indicará la ruta y nombre del archivo que desea consultar.

3. El selecciona el archivo.

4. El sistema lee el archivo y muestra el contenido.

Flujos alternativos:

4. No fue posible crear el archivo. El sistema muestra el mensaje: Error al intentar abrir el archivo.

Postcondiciones:

try {

flujoSalida = new PrintWriter(archivo);

} catch (FileNotFoundException e) {

JOptionPane.showMessageDialog(null, "Error al intentar abrir el archivo" + archivo);

System.exit(0);

}

JOptionPane.showMessageDialog(null, "Deberá ingresa tres líneas de texto");

for (int i = 1; i <= 3; i++) {

String linea = JOptionPane.showInputDialog("Ingrese la línea " + i);

flujoSalida.println(i + " " + linea);

}

flujoSalida.close();

JOptionPane.showMessageDialog(null, "El texto fue guardado en el archivo: " + archivo);

}

}

Page 8: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

7

El problema que nos plantea este caso de uso es encontrar la forma de leer el contenido del archivo para poder desplegarlo

en la pantalla. Para ello, podemos usar la clase FileInputStream, DataInputStream y BufferedReader

Constructor

FileInputStream(File file)

Crea un FileInputStream usndo el descriptor de archivos fdObj, lo que representa una

conexión existente a un archivo real en el sistema de archivos.

DataInputStream(InputStream in) Crea una DataInputStream que utiliza el InputStream subyacente especificado.

BufferedReader(Reader in)

Crea un flujo de caracteres de entrada de búfer que utiliza un buffer de entrada de tamaño predeterminado.

public class CarnetLab05ejem01 {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

JOptionPane.showMessageDialog(null, "Iniciaremos escribiendo un archivo.\nNombre el archivo con su número de carnet");

escribirArchivo();

JOptionPane.showMessageDialog(null, "Ahora leeremos el archivo creado.\nElija el nombre del archivo recién creado");

leerArchivo();

}

Page 9: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

8

public static void leerArchivo() {

JOptionPane.showMessageDialog(null, "Ejemplo leer archivo");

//Se crea el filtro de archivos

FileNameExtensionFilter filtro = new FileNameExtensionFilter("Archivos de texto", "txt");

//El objeto Swing que mostrará la ventana para seleccionar el archivo

JFileChooser seleccionador = new JFileChooser();

seleccionador.setFileFilter(filtro);

seleccionador.setDialogTitle("Abrir");

//Muestra la ventana de diálogo

seleccionador.showOpenDialog(null);

if (seleccionador.getSelectedFile() != null) {

File nombreArchivo = seleccionador.getSelectedFile();

JOptionPane.showMessageDialog(null, "Ejemplo leer archivo");

try {

// Abrimos el archivo

FileInputStream fstream = new FileInputStream(nombreArchivo);

// Creamos el objeto de entrada

DataInputStream entrada = new DataInputStream(fstream);

// Creamos el Buffer de Lectura

BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));

String strLinea;

// Leer el archivo linea por linea

while ((strLinea = buffer.readLine()) != null) {

// Imprimimos la línea por pantalla

System.out.println(strLinea);

}

// Cerramos el archivo

entrada.close();

} catch (Exception e) { //Catch de excepciones

System.err.println("Ocurrio un error: " + e.getMessage());

}

}

}

Page 10: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

9

Ejercicios

1. Modifique el programa de ejemplo para que las opciones de lectura (Extraer) y escritura(Nuevo) sean

accesibles desde un JFrame. El JFrame deberá tener un TextField en el que se debe editar la ruta y nombre del

archivo utilizado para la opción que corresponda y un botón para cada opción.

Nota: puede hacer réplicas de los métodos leerArchivo y escribirArchivo con un parámetro que contenga el

nombre de archivo a leer o escribir.

2. Modifique el programa (jFrame) para que se agregue un TextField que permita la agregación de líneas al

archivo de texto según el texto que se escriba al presionar un botón(Agregar Linea) y paralelamente haga que

inserte esa línea a una jtable3. Además deberá agregar otro botón que extraiga los datos del archivo y los ponga

en el jTable(borrando antes los datos que tenga el jTable).

Page 11: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

10

Sentencias DML y DDL

Las sentencias SQL se dividen en dos categorías; Lenguaje de definición de datos; data

definition language (DDL) y Lenguaje de manipulación de datos ;data manipulation

language (DML).

Lenguaje de definición de datos (DDL)

Las sentencias DDL se utilizan para crear y modificar la estructura de las tablas así como otros objetos de la base de datos.

CREATE - para crear objetos en la base de datos.

ALTER - modifica la estructura de la base de datos.

DROP - borra objetos de la base de datos.

TRUNCATE - elimina todos los registros de la tabla, incluyendo todos los espacios

asignados a los registros.

Lenguaje de manipulación de datos (DML)

Las sentencias de lenguaje de manipulación de datos (DML) son utilizadas para

gestionar datos dentro de los schemas. Algunos ejemplos:

SELECT - para obtener datos de una base de datos.

INSERT - para insertar datos a una tabla.

UPDATE - para modificar datos existentes dentro de una tabla.

DELETE - elimina todos los registros de la tabla; no borra los espacios asignados a los registros.

Page 12: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

11

Creación de Tabla y datos en Postgres SQL(pgAdmin).

Primero debemos establecer la Conexión hacia nuestra base de datos en el servidor.

Conexión al Servidor

En casa o cuando falle la conexión de red utilizaremos la conexión local.

Para entrar busque el programa pgAdmin, ir a inicio…

Crear una conexión al servidor hacia su usuario (con su carnet)

Clic en File, Add Server

Los parámetros son como se muestran y su password es carnet(su carnet el minúsculas o según se haya creado)

Notas: si no se puede conectar al usuario, vaya a los anexos y siga los pasos para hacer el

procedimiento de crear su usuario.

Esto se hace así para que no se utilice el usuario administrador de forma innecesaria y porque el

administrador será bloqueado previo a las prácticas evaluadas 2 y 3.

No instale postgres en su pc del laboratorio sin notificarle a su instructor.

Page 13: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

12

Hacer un script para crear la tabla Producto

Sobre su base de datos(carnet) presione clic derecho y clic en CREATE Script

Digite el script en base a comandos DDL como se muestra:

Presione el botón de execute pgScript para que se ejecuten los comandos.

Cuando se ejecute correctamente, la tabla deberá quedar alojada en el árbol de objetos de su usuario en la

ubicación que se muestra

Page 14: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

13

Prueba de comandos DML

INSERT (Insertar o agregar datos)

Puede insertar otros tres artículos

SELECT(Mostrar los registros)

Page 15: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

14

UPDATE (Actualiza datos de el o los registros que se indiquen en Where)

Vuelva a ejecutar el SELECT para ver los cambios

DELETE (Eliminar los registros seleccionados)

Vuelva a ejecutar el SELECT para ver los cambios, si no agrego más registros, deberá aparecer como se muestra

Page 16: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

15

Anexos

Anexo 1 Conexión Local al usuario postgres(o Servidor Local)

Si no tiene instalado el postgres,instálelo(anexo 2) y haga una conexión nueva con los parámetros que se

muestran o con lo que detalla el anexo 3.

Page 17: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

16

Anexo 2 Instalación

1) Instalación:

Si no posees postgrees en tu pc, ve al sitio de descarga ftp de la asignatura e

instálalo(http://aula.fia.ues.edu.sv/materialpublico/prn315 ).

Con Contraseña(administrador)

2) Para no usar el usuario administrador, se sugiere crear un usuario con credenciales de su carnet para

trabajar en laboratorio.

a. Crear un script para creación de su usuario y base de datos a utilizar

Primero entre al usuario postgres con la contraseña administrador y cree un script

Presione clic derecho, créate Script como se muestra

Script (cámbiale la palabra carnet por el tuyo)

CREATE ROLE carnet LOGIN PASSWORD 'carnet' VALID UNTIL 'infinity';

CREATE DATABASE carnet WITH OWNER carnet ENCODING = 'UTF8';

REVOKE CONNECT ON DATABASE carnet FROM PUBLIC;

ALTER ROLE carnet NOINHERIT;

Page 18: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

17

b. Copia el script en la ventana y ejecútalo:

c. Salir de pgadmin y volver a entrar creando una nueva conexión

Page 19: ARCHIVOS Y BASES DE DATOS - Universidad de El …aula.fia.ues.edu.sv/materialpublico/prn315/PRN315...4 Lista de constructores FileNameExtensionFilter(String description, String extensions)

18

Anexo 3 Conexión Local a su usuario(o Servidor Local)