individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ......

54
Individual 3 cliente-servidor Nombres: Boris Arias

Upload: others

Post on 05-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Individual 3

cliente-servidor

Nombres: Boris Arias

Page 2: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Problema 1. Actualización de un registro. Ejemplifique y explique, bajo Swing, la actualización de un registro de una tabla de una base de datos. Considere en la ejemplificación el cubrir, como mínimo, los siguientes aspectos: 1.- Selección y consulta a la base de datos del registro a actualizar. 2.- Despliegue y modificación de los datos de registros. 3.- Almacenamiento de los datos modificados en la base de datos. Paso 1: Ejemplos Entrada/Salida

Para Selección y consulta a la base de datos del registro a actualizar Despliegue y modificación de los datos de registros. Almacenamiento de los datos modificados en la base de datos. 1.1 Entrada > [Programa] > Salida

> [Programa]>

Seleccionamos la id numero 12 la

cual nos despliega el registro que

hay existe.

En el cual en este caso deseamos

actualizar el sueldo de esa

persona del registro 12.

Actualizamos el sueldo del

empleado. Seleccionamos de nuevo

la id registro 12 y podemos ver que

sueldo se actualizo y almacenó en la

base de datos.

Page 3: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

1.2 Entrada > [Programa] > Salida En el caso de buscar el registro número 1 y actualizar el apellido tendremos la siguiente entrada

Acá la entrada de

datos consultados son

todos aquellos que

poseen un valor 1 ya

que así se realizo la

consulta SQL

Page 4: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

> [Programa]>

Condición De Borde

Como entrada solo se acepta un botón existente en la aplicación swing llamado conectar el

cual conecta con la base de datos previamente determinada en la conexión de código, si no

realizamos esto no podremos acceder a la base de datos ni mostrar, ni actualizar datos con los

demás botones.

Si presionamos el botón ver sin estar conectado a la BD este arroja una advertencia en una

etiqueta de que no está conectado a la BD o no tiene registros.

Si presionamos el botón ver conectado a la BD pero sin ningún dato en el campo de texto de la

ID este nos mostrara todos los registros que existen en la tabla.

Al momento de actualizar si no llenamos todos los campos tales como la ID, nombre, apellido,

sueldo es decir por ejemplo llenamos solo 2 al presionar actualizar este arrojara una etiqueta

de que faltan datos por completar o no sé a realizado la conexión

La salida mostramos

el nombre, apellido y

sueldo actualizado

con los demás datos

que poseen algún

numero 1

Page 5: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 2: Análisis y Diseño

El problema nos pide que desarrollemos bajo una aplicación swing los siguientes aspectos

-Para Selección y consulta a la base de datos del registro a actualizar -Despliegue y modificación de los datos de registros. -Almacenamiento de los datos modificados en la base de datos.

Para comenzar primero creamos una clase “jFrame” para posteriormente realizar la aplicación

swing en netbeans por medio de los “swing controls” por medio de la palette en donde

tenemos una serie de botones, etiquetas, campos de texto, etc necesarios para crear una

aplicación

Maleta de controles para crear la

aplicación.

Una vez arrastrados los botones de

control a un panel procedemos a

darle nombre a esos botones,

etiquetas, etc. con el fin de darle

una mejor estructura a la aplicación

y darle la acción correspondiente a

cada botón, campo de texto,

etiquetas, etc

Page 6: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

En nuestro código ya tenemos seleccionada la base de datos que vamos a utilizar

DriverManager.getConnection("jdbc:mysql://localhost/dacs","root","boris");

Ahora en nuestra aplicación poseemos 2 botones uno que se llama “conectar” y “desconectar”

los cuales le damos la respectiva acción de conectar y desconectar de la base de datos y un

jLabel que nos da conocer si estamos o no conectados

A continuación poseemos dos botones de los cuales les damos acciones el primero nos realiza

la conexión (botón conectar) en la cual le realizamos la conexión con my sql y si esto se

cumple en el jlabel que renombramos en jLconexion la cual le actualizamos su estado por

medio del jLconexion.setText y le pasamos la palabra “conectado” para saber que la conexión

se realizo satisfactoriamente.

Acá podemos ver lo botones que

utilizaremos en nuestra aplicación

jButton: son los botones a los cuales

les daremos acciones

jLabel: son etiquetas las cuales nos

mostraran información en la

aplicación

jTextField: son campos de texto que

pueden guardar información

jTable: nos mostrara una tabla

Page 7: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

El segundo botón es para desconectarnos de la base de datos en el cual le pasamos

primeramente el conn la cual utilizamos para realizar la conexión anteriormente pero que

ahora le pasamos el atributo conn.close() para cerrar la conexión y modificamos la etiqueta

jLconexion.setText “desconectado” para dar cuenta de que ejecuto la acción .

Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual nos

muestre los datos que existen en una tabla de la base de datos, para esto realizamos lo

siguiente:

Primero declaramos la tabla modelo con un object que guarde las filas de la tabla que

crearemos

A continuación le damos acción al botón “ver”

Le daremos acción al botón

(jButton) “ver” y trabajaremos con

la id de nuestra tabla ya que es una

primary key (jTextField)

Page 8: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Ahora vamos al evento del botón ver y ejecutamos la consulta sql correspondiente:

Select * from empleado where NoEmpleado like ‘%+jTextField1.getText()+ %’

Realizamos esta consulta sql ya que nos mostrara todos los campos que posean el atributo

ingresado en el jTextField en la tabla y si no tienen datos mostrara la tabla con todos sus

registros.

A continuación reasignamos un

modelo en blanco y procedemos a

crear columnas a nuestra tabla las

cuales deben ser las mismas que la

de nuestra base de datos Empleado

Posterior a esto asignamos

primeramente el tamaño del arreglo

con la cantidad de columnas que

creamos en el paso anterior

Luego en el for vamos separando

cada fila y escribimos las filas con el

resultado SQL correspondiente

Page 9: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Con estos pasos podemos crear una consulta para buscar datos de una columna, en este caso

de la ID la cual captura el dato ingresado y ejecuta la respectiva sentencia para que muestre la

tabla con las características que cumplan con el dato ingresado por la ID y si el campo se

encuentra vacio esta muestra la tabla con todos sus registros.

Ahora para actualizar los registros de un dato creamos un botón actualizar (jButton)

Una vez ejecutado el botón ver este nos muestra el registro de la ID numero “12”

Posterior a esto vamos a la codificación del botón para actualizar registros en donde

realizamos lo siguiente:

Creamos una consulta my sql por medio del executeUpdate correspondiente:

Tenemos un botón actualizar y una etiqueta a

su costado en la aplicación

Nos basaremos para buscar al sujeto

que queremos actualizar su sueldo

por medio de la ID ya que por ser

primary key buscamos a la persona

especifica en este caso la ID “12”

cabe destacar que los demás

campos tales como el nombre

apellido y sueldo serán los atributos

que actualizaremos posteriormente

Page 10: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

En donde el jTextField2.getText() guarda el campo de texto del nombre donde NoEmpleado es

igual a jTextField1.getText() en este caso este jTextField pertenece a la ID es decir en este caso

“12”. Para las otras dos actualizaciones es lo mismo solo que cambia el nombre de la columna

a actualizar (apellido,sueldo) y el jTextField porque son distintos campos de texto.

Al final de la actualización modificamos la etiqueta que se encuentra al costado del botón

actualizar para dar cuenta que “actualización exitosa”(jactual)

A continuación presionamos nuevamente ver para dar cuenta que el registro numero 12 se

actualizo correctamente (Apellido,Nombre,Sueldo)

Acá actualizamos el registro numero

12 y para demostrar que funciona

actualizaremos los 3 campos

disponibles para hacerlo

Actualización de la etiqueta por medio del

Jactual.setText

Page 11: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 3: Especificación en DA

UML

Conexión mysql

conectado

desconectado error No conectado a la BD

Llene los campos

actualizar

NoEmpleado (ID)

Nombre

Apellido Sueldo

ver NoEmpleado (ID)

Apellido Nombre

FechaNacimiento

Sexo

Sueldo

NoDepartamento

Page 12: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Diagrama de flujo

Base de Datos

login

Conexión =! null

Conectado!!!! Desconectado!!!!

Si ID es nulo si botón

ver se ejecuta

Muestra todos los registros de la

tabla que estamos ocupando

Si ID no es nulo si botón

ver se ejecuta

Muestra los registros de la ID o que

tengan un valor igual al ingresado

Page 13: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Si ID no es nula, si nombre no es

nula si apellido no es nula si

sueldo no es nula

Si presiona

actualizar

Actualiza nombre, apellido, sueldo

Se actualizo correctamente

No está conectado a la BD y falta algún

registro o no existe

Page 14: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 4: Implementación en Java

import com.mysql.jdbc.Connection;

import com.mysql.jdbc.Statement;

import java.sql.DriverManager;

import java.sql.ResultSet;

import javax.swing.table.DefaultTableModel;

public class ejercicio1 extends javax.swing.JFrame {

public static DefaultTableModel modelo = new DefaultTableModel();

//filas

Object[] filas;

public ejercicio1(java.awt.Frame parent, boolean modal) {

initComponents();

jButton3.doClick();

}

Connection conn;

Statement stm;

public ejercicio1() {

initComponents();

}private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

try{

conn = (Connection) DriverManager.getConnection

("jdbc:mysql://localhost/dacs","root","boris");

stm = (Statement) conn.createStatement();

jLconexion.setText("conectado!!");

//creamos conexion con mysql la base de datos y si se cumple esto

modificamos el jLabel a “conectado”

}

catch(Exception e){

Page 15: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

}

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

try{

conn.close();

jLconexion.setText("desconectado");

}// y si presionamos el boton desconectar este cierra la conexion y

modifica la etiqueta

catch(Exception e){

}

}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {

try{

stm.executeUpdate("update empleado set nombre

='"+jTextField2.getText()+"' "+ "where

NoEmpleado='"+jTextField1.getText()+"'");

stm.executeUpdate("update empleado set apellido

='"+jTextField3.getText()+"' "+ "where NoEmpleado=

'"+jTextField1.getText()+"'");

stm.executeUpdate("update empleado set sueldo

='"+jTextField4.getText()+"' "+ "where NoEmpleado=

'"+jTextField1.getText()+"'");

jactual.setText("actualizacion exitosa!");

//creamos la actualización con el comando sql le pasamos los

atributos del jTextField y modificamos la etiqueta

jTextField1.setText("");//una vez ejecutada la acción dejamos en

blanco los campos de texto

jTextField2.setText("");

Page 16: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

jTextField3.setText("");

jTextField4.setText("");

}

catch(Exception e){

jactual.setText("no hay datos o no a realizado la coneccion para

poder actualizar");

}

}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

try {

Statement consulta=(Statement) conn.createStatement();

ResultSet rs = consulta.executeQuery

("select * from empleado where NoEmpleado like

'%"+jTextField1.getText()+"%'");//textField de busqueda

// reasigno un modelo en blanco:

modelo = new DefaultTableModel();

jTable1.setModel(modelo);

//creamos la columnas de nuestra tabla:

modelo.addColumn("NoEmpleado");

modelo.addColumn("Apellido");

modelo.addColumn("Nombre");

modelo.addColumn("FechaNacimiento");

modelo.addColumn("Sexo");

modelo.addColumn("Sueldo");

modelo.addColumn("NoDepartamento");

//asigno el tamaño del arreglo con la cantidad de columnas:

Page 17: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

filas = new Object[modelo.getColumnCount()];

//escribo las filas:

while (rs.next())

{ //cantidad de columnas

for (int i=0;i<modelo.getColumnCount();i++){

filas[i] = rs.getObject(i+1);

}

//escribo las filas del resultado SQL//

modelo.addRow(filas);

jTable1.setModel(modelo);

}

}

catch (Exception e){

jLconexion.setText("no hay datos o no a realizado la coneccion");

}

}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

new ejercicio1().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton jButton1;

Page 18: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

private javax.swing.JButton jButton2;

private javax.swing.JButton jButton3;

private javax.swing.JButton jButton4;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLconexion;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

private javax.swing.JTextField jTextField1;

private javax.swing.JTextField jTextField2;

private javax.swing.JTextField jTextField3;

private javax.swing.JTextField jTextField4;

private javax.swing.JLabel jactual;

// End of variables declaration

}

Visualización de la aplicación swing

Page 19: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual
Page 20: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Problema 2. Uso de jComboBox (40 ptos.)

El adecuado uso de la clase jComboBox con datos almacenados en una tabla de

una base de datos, requiere que se establezca o se maneje en forma integrada el

identificador (que será utilizado posteriormente) y la descripción que será

desplegada en el jComboBox. Para resolver aquel problema es posible, en internet,

encontrar código como el siguiente, donde ClaseParaComboBox es una clase

especialmente desarrollada para cumplir con lo anterior:

public class ClaseParaComboBox{

private String nombreDeEjemplo;

private int codigo;

public ClaseParaComboBox(int codigo, String nombreDeEjemplo){

this.codigo=codigo;

this.nombreDeEjemplo=nombreDeEjemplo;

}

public String getNombreDeEjemplo() {

return nombreDeEjemplo;

}

public void setNombreDeEjemplo(String nombreDeEjemplo) {

this.nombreDeEjemplo = nombreDeEjemplo;

}

public int getCodigo() {

return codigo;

}

public void setCodigo(int codigo) {

this.codigo = codigo;

}

public String toString()

{

return nombreDeEjemplo;

}

Page 21: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

}

Ello permitiría integrar tanto el nombre como su identificador en los ítemes del

jComboBox,

usualmente mediante esta sentencia:

jComboBoxEjemplo.addItem(new ClaseParaComboBox(1,"ItemEjemploNº1"));

Para mostrar los items desde el jComboBox, cuando son objetos como en este

caso, se usa lo que

devuelve el método toString() de la clase definida.

Y para usar, los valores de, por ejemplo, identificación se usa una instancia de la

clase, como se puede

ver en este ejemplo:

ClaseParaComboBox objeto=(ClaseParaComboBox) jComboBoxEjemplo.getItemAt(1);

System.out.println(objeto.getCodigo);

System.out.println(objeto.getNombreDeEjemplo);

Note que en la sentencia anterior se hace un casting para asignar el item del

jComboBox a un objeto de

la clase ClaseParaComboBox.

Se pide que usted adapte todos y cada uno de los trozos de código anterior para

usar el jComboBox con

los datos de una tabla de su elección que, al menos, tenga un identificador y una

descripción. Y que

pruebe esa adaptación en una aplicación que lea los datos de dicha tabla, construya

el jComboBox,

permita seleccionar uno de los items y despliegue en un jLabel el identificador del

item seleccionado.

Page 22: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 1: Ejemplos Entrada/Salida

1.1 Entrada > [Programa] > Salida Como entrada tenemos la siguiente estructura del programa en swing

> [Programa]>

Como salida podemos ver el programa en ejecución y solo seleccionando el nombre del

combobox podemos seleccionarla y esta nos retornara los datos en una etiqueta tales como

Noempleado , apellido y sueldo.

Page 23: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Condición De Borde

En torno a la aplicación en si no posee muchas complicaciones ya que al ejecutar el programa

este se conectara directamente a la base de datos y el único manejo que es utilizable es el

combobox ya que es el que determinara que datos nos mostrara en las etiquetas para conocer

datos

Page 24: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 2: Análisis y Diseño

Para comenzar creamos la aplicación en swing por medio de la maleta (Swing controls) los

cuales arrastramos al panel y vamos dando forma a nuestra aplicación según sus

requerimientos y necesidades en este caso para el uso del jcombobox

Atributos swing que utilizaremos en

la clase jframe

Page 25: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Primeramente orientándonos a lo que se nos pide creamos una clase para definir los

constructores y sus variables con el fin de que sean llamados posteriormente, comenzamos:

En primer lugar definimos las

variables que utilizaremos

posteriormente para ser llamados

por los métodos

Creamos el método que retorna y

actualiza NoEmpleado

Creamos el método que retorna y

actualiza el nombre

Page 26: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Para cada variable declarada asignamos un método de retornar y actualizar .Para luego al final

llamar al método que utilizaremos para llenar el combobox mas adelante.

Creamos el método que retorna y

actualiza el apellido

Creamos el método que retorna y

actualiza el sueldo

Finalmente en esta clase

retornamos el método nombre el

cual será utilizado para llenar el

combobox en la otra clase.

Page 27: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

A continuación creamos una nueva clase llamada “conexión” en la cual realizamos la conexión

con la base de datos y llamaremos a los métodos de la clase empleado.

Comenzamos implementando lo que son las librerías correspondientes para la clase

“conexión”

Comenzamos llamando a la clase empleado en el list <empleado> y creamos la conexión con

la base de datos con:

la base de datos el usuario y su contraseña

Librerías para la clase conexión a

utilizar importante destacar la

importación de list y arrayList ya que

estas nos permitirán llamar a los

métodos

Page 28: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Luego de realizar la conexión con la base de datos realizamos la consulta sql de seleccionar la

tabla.

Una vez hecho esto implementamos un list <empleado> el cual nos permitirá llamar a los

métodos de la clase empleados y el listabox que es una variable utilizada en la clase jFrame

mas adelante para cargar los datos al combobox.

Luego llamamos a los métodos de la tabla empleado la guardamos en una variable combo y

luego está la adherimos a listabox la que esta implementada para cargar el jcombobox

Page 29: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Para seguir ahora nos vamos a la clase jFrame en donde creamos instancia cargarComboBox()

que utilizaremos para llenar nuestro jcombobox de swing

Ahora procederemos a cargar el jcombobox por medio del

list<emplado> listabox=conexiones.lista()

Gracias a esto podemos utilizar atributos de otras clases y por medio del listabox

implementado en la clase conexiones vamos llenando el jcombobox ya que si bien

recordamos en la clase empleado al final retornábamos el metodo nombre el cual

utilizaremos para llenar el jcombobox con la identificación para ser mostrados por medio de

un ciclo for y que al jcomboBox1 agregué la listabox(nombre).

Page 30: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

A continuación nos vamos hacia el jcombobox1 y le damos acción en donde llamamos al

método con todos los atributos que llamamos anteriormente (jcombobox1 posee la columna

nombre de la tabla) esto quiere decir que el jcombobox mostrara los registros existentes en la

columna nombre.

Y para a su vez mostrar los demás datos en los jlabel llamamos los otros métodos de la clase

conexiones que los mostraremos en sus respectivas etiquetas

A finalmente obtenemos el resultado esperado por medio de métodos generar un combobox

y que muestre los demás datos de esa tabla en un j label

Page 31: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 3: Especificación en DA

Aplicación swing Carga ComboBox

Muestra ComboBox

conexiones conectado

Retorna set listaboox

empleado

Retorna get

Retorna set

Page 32: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Base de datos

login

Conexión=!null Error!!!

Conectado!!!

Consulta(select * from empleado)

while(rs.next())

combo.setNoEmpleado(rs.getString("NoEmpleado"));

combo.setnombre(rs.getString("nombre"));

combo.setapellido(rs.getString("apellido"));

combo.setsueldo(rs.getInt("sueldo"))

listabox.add(combo);

String NoEmpleado;

String nombre;

String apellido;

Int sueldo;

Retorna y actualiza Noempleado

Retorna y actualiza nombre

Retorna y actualiza apellido

Retorna y actualiza sueldo

Devuelve String nombre

Page 33: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Cargar combobox

empleado combobox =(empleado)jComboBox1.getSelectedItem();

combobox!=null

actualiza(combobox.retornaNoEmpleado());

actualiza (combobox.retornaapellido());

actualiza (combobox.retoransueldo());

Page 34: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 4: Implementación en Java

En este paso ocupamos 3 diferentes clases

package codigo;

public class empleado

{

//definimos las variables

private String NoEmpleado;

private String nombre;

private String apellido;

private int sueldo;

//implementamos el metodo para retornar

public String getNoEmpleado()

{ return NoEmpleado;}

//omplementamos el metodo para setear

public void setNoEmpleado(String NoEmpleado)

{ this.NoEmpleado = NoEmpleado;}

public String getnombre()

{ return nombre; }

public void setnombre(String nombre)

{ this.nombre = nombre; }

public String getapellido()

{ return apellido; }

public void setapellido(String apellido)

{ this.apellido = apellido; }

public int getsueldo()

{ return sueldo; }

public void setsueldo(int sueldo)

{ this.sueldo = sueldo; }

Page 35: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

@Override

//retornamos este metodo ya que lo utilizaremos para cargar el

jcombobox

public String toString()

{ return this.nombre; }

}

//==============================================================

package codigo;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

public class Conexiones{

static Connection conn;

public static List<empleado> lista(){

try {

Statement s;

ResultSet rs;

DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());

Page 36: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

conn =

DriverManager.getConnection("jdbc:mysql://localhost/dacs","root","boris");

s = conn.createStatement();

String consulta = "Select * from empleado";

//generamos consulta sql

s = conn.createStatement();

rs = s.executeQuery(consulta);

List<empleado> listabox = new ArrayList<empleado>();

//con el list podemos llamar metodos de las otras clases

while(rs.next()) {

empleado combo = new empleado();

combo.setnombre(rs.getString("nombre"));

combo.setNoEmpleado(rs.getString("NoEmpleado"));

//llamamos a los metodos y realizamos la consulta

combo.setapellido(rs.getString("apellido"));

combo.setsueldo(rs.getInt("sueldo"));

listabox.add(combo); //la consulta la guardamos en el

listabox para cargar el combobox

}

return listabox;

}

catch(Exception ex)

{

return null;

}

finally

{

try

{

conn.close();

}

Page 37: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

catch (SQLException ex)

{

ex.printStackTrace();

}

}

}

}

//===============================================================

package codigo;

import java.util.List;

public class ejercicio2 extends javax.swing.JFrame {

public ejercicio2() {

initComponents();

cargarComboBox();

}

private void cargarComboBox()

{

List<empleado> listabox=Conexiones.lista();

//con el list llamamos a los metodos

if(listabox!=null)

{

int size=listabox.size();

// hacemos esto para que ingrese cada dato de la tabla

for(int i=0;i<size;i++)

{

jComboBox1.addItem(listabox.get(i));

//adherimos esta informacion al jcombobox

Page 38: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

}

}

}

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt)

{

empleado combobox = (empleado)jComboBox1.getSelectedItem();

if(combobox!=null) {

jLabel5.setText(combobox.getNoEmpleado()+"");

//las columnas la aplicamos en las etiquetas

jLabel6.setText(combobox.getapellido()+"");

jLabel7.setText(combobox.getsueldo()+"");

}

}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new ejercicio2().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JComboBox jComboBox1;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

Page 39: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;

// End of variables declaration

}

Page 40: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Problema 3.- jTable y JOIN (40 ptos.)

Resuelva el problema de ingresar una sentencia SELECT que incluya el uso de

JOIN en un jText y que, luego de presionar un botón de ejecución, aquello entregue

como resultado una jTable que contenga los datos de la consulta. Un adecuado

ejemplo de aquello, pero más complejo obviamente, es lo que hace NetBeans con el

manejo de las consultas SQL. En la imagen se puede ver la sentencia (que incluye

JOIN) y la tabla que se despliega (junto con el botón de ejecución):

Page 41: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 1: Ejemplos Entrada/Salida

1.1 Entrada > [Programa] > Salida Tenemos la siguiente entrada swing

> [Programa]>

Realizamos una consulta join la cual nos une dos tablas por un factor común

Page 42: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

1.2 Entrada > [Programa] > Salida También podemos realizar otro tipo de consultas mysql como seleccionar una tabla y muestre

los registros

> [Programa]>

Por medio de un select podemos ver los registros de una tabla cualquera de la BD

Page 43: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Condición De Borde

Si presionamos el botón consultar si este poseer ningún campo de texto en my sql el

programa por medio de un jlabel arroja error.

Si presionamos el botón consultar y este posee un campo llenado pero que no es compatible

con my sql el programa arroja un error en un jlabel .

Si aplico una sentencia “show databases” esta me muestra las bases de datos existentes pero

no puedo usar un “use” para seleccionar una base de datos.

Al igual que no se pueden realizar cambios de alteración de tablas ya que el botón que

permite ejecutar es un select el cual es que uno ingresa por medio del textfield y poder

visualizar registros de una base de datos especifica ya que esta especificada en la conexión .

Page 44: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 2: Análisis y Diseño

Creamos primero una aplicación acorde a la actividad solicitada

-Creamos la aplicación en swing con

la maleta de controles.

-Y ocupamos los controles

necesarios

Page 45: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Comenzamos primero declarando las librerías que utilizaremos tales como la de sql como

declarar la tabla por default

La sentencia String “sintaxis” es de suma importancia ya que esta será el atributo que

contendrá la sentencia ingresada en my sql.

Y el metadato será se suma importancia ya que gracias a el podremos guardar la descripción

de los datos

Posterior a eso generamos la conexión a la base de datos por medio del driver ,usuario y

contraseña y establecemos conexión.

Declaramos las variables

necesarias para la codificación

tales como de conexión, result

set , de la tabla etc

Page 46: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Ahora le damos acción a nuestro botón consultar

Nos introducimos en su ejecución y denotamos lo siguiente:

El for que introducimos primeramente lo utilizaremos para que al momento de introducir una

sentencia este limpia los registros y datos que contenga la tabla en ese momento, esta acción

final la realisa el table.removeRow(i)

jtextField1.getText() es el campo de texto que recibe la sentencia my sql la cual es recibida por

la variable que declaramos anteriormente (sintaxis)

-Realizamos la consulta

correspondiente al TextField por

medio de la sintaxis

-trae el paso de la sentencia a la

table

-para guardarlo posteriormente a

los metadatos

Page 47: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

-Después de esto debemos contar el numero de las columnas , esto lo realizamos con la

primera línea la cual captura estos datos en un metadato.

-en la segunda línea crea etiqueta del largo de numero de columnas utilizando el for (tercera

linea)

-Para después en la cuarta línea guarda en etiquetas lo que obtiene de metadato

Para luego con estos antecedentes poder crear un modelado de la tabla

Creamos filas en la tabla

Se rellena cada posición del array

con una de las columnas de la tabla

Se añade al modelo la fila completa.

Page 48: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Cerramos el try…

De caso contrario en un jLabel1.setText capturamos la sentencia errónea y tecleamos error

Page 49: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 3: Especificación en DA

Base de datos

pass

Conexión!=null

Error ¡!!!

conectado

Si botón consulta==1 y

jTextField1 no nulo

Limpia jtable

table.removeRow

sintaxis=jTextField1.getText();

rs = s.executeQuery(sintaxis);

jTable1.setModel(table);

metaDatos = rs.getMetaData();

Page 50: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

int Ncolum =

metaDatos.getColumnCount();

//cuenta las columnas de la

sentencia

Object[] etiquetas = new

Object[Ncolum];

//crea etiqueta del largo de

numero de columnas

for (int i = 0; i < Ncolum; i++)

guarda en etiquetas i

//crea modelado de la tabla

while (rs.next())

Object[] fila = new

Object[Ncolum];//crea

filas de la tabla

for (int i = 0; i < Ncolum; i++) {

fila[i] = rs.getObject(i + 1);

Se añade al modelo la fila

completa

sintaxis posee un error

Page 51: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

Paso 4: Implementación en Java

package pregunta3;

import java.sql.*;

import javax.swing.table.DefaultTableModel;

public class ejercicio3 extends javax.swing.JFrame {

Connection conn;

Statement s;

//declaramos las variables que utilizaremos en el codigo

ResultSet rs;

DefaultTableModel table = new DefaultTableModel();

//declaracion de la tabla por defecto

String sintaxis;

//la utilizaremos para llamarla desde el texfield como sentencia sql

ResultSetMetaData metaDatos;

//se utiliza para guardar descripcion de datos

public ejercicio3() {

try {

DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());

//definimos la conexion con mysql y utilizaremos la BD dacs

conn =

DriverManager.getConnection("jdbc:mysql://localhost/dacs","root","boris");

s = conn.createStatement();

} catch (Exception e) {

}

Page 52: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

initComponents();

}private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

try{

for (int i = table.getRowCount() -1; i >= 0; i--){

//al momento de realizar una new sentencia por medio del for limpia jtable

table.removeRow(i);

}

sintaxis=jTextField1.getText();

//guarda variable en jtexfield sentencia sql

rs = s.executeQuery(sintaxis);

// realizando consulta del jtextfield

jTable1.setModel(table);

//trae tabla de sentencia

metaDatos = rs.getMetaData(); //guarda

int Ncolum = metaDatos.getColumnCount();

//cuanta las columnas de la sentencia

Object[] etiquetas = new Object[Ncolum];

//crea etiqueta del largo de numero de columnas

for (int i = 0; i < Ncolum; i++) {

etiquetas[i] = metaDatos.getColumnLabel(i + 1);

//guarda en etiquetas lo que obtiene de metadatodo

}

table.setColumnIdentifiers(etiquetas);

//crea modelado de la tabla

Page 53: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

while (rs.next()) {

Object[] fila = new Object[Ncolum];

//crea filas de la tabla

// Se crea un array que será una de las filas de la tabla.

// Se rellena cada posición del array con una de las columnas de la tabla

for (int i = 0; i < Ncolum; i++) {

fila[i] = rs.getObject(i + 1);

// El primer indice en rs es el 1, no el cero, por eso se suma 1.

}

// Se añade al modelo la fila completa.

table.addRow(fila);

}

}

catch(Exception e){

// en caso contrario tira error

jLabel1.setText(" '"+sintaxis + "' posee un error!!!!

");

}

}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

Page 54: Individual 3 cliente-servidor · control a un panel procedemos a darle nombre a esos botones ... Ahora para saber los datos que poseemos en la tabla podemos hacer un jtable la cual

new ejercicio3().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton jButton1;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

private javax.swing.JTextField jTextField1;

// End of variables declaration

}