Вы находитесь на странице: 1из 44

JAVA - NetBeans

Ing. Oscar Ascn Valdivia 1


INSTITUCION EDUCATIVA SUPERIOR TECNOLGICO PBLICO
CARLOS SALAZAR ROMERO
TALLER DE PROGRAMACION CONCURRENTE
Docente: Ing. Oscar Ascn Valdivia
Nuevo Chimbote 2013
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 2
Qu es Cliente / Servidor?
Dos aplicaciones, una de las cuales solicita servicios (cliente) y la otra procesa las solicitudes
(servidor)
Es independiente del hardware donde se ejecuta, cliente y servidor pueden ejecutarse en la misma
PC
En algunos casos los papeles se intercambian
Cmo funciona una aplicacin Cliente / Servidor?
Caractersticas
Servicio: Relacin entre procesos
Recursos compartidos: Un servidor y varios clientes
Protocolos asimtricos: El cliente inicia el dilogo, los servidores esperan las solicitudes
(pasivos)
Transparencia de ubicacin: En la misma PC o en una PC a lo largo de una red
Mezcla e igualdad: Software independiente del hardware o de la plataforma (Sistema operativo)
Intercambios basados en mensajes: Cliente y Servidor interactan a travs de mensajes
Encapsulamiento de servicios: El servidor es un especialista. Pueden ser sustitudos sin afectar
al cliente (La interfaz de mensajes no debe cambiar)
Facilidad de escalabilidad: Horizontalmente o Verticalmente
Integridad: El cdigo de servidor y los datos de servidor se conservan centralmente. Los cliente
mantienen su individualidad e independencia
Clasificacin
Los autores hacen distintas clasificaciones de los sistemas Cliente / Servidor
Por los servicios que se atienden
Por la distribucin de las unidades funcionales en capas
Por la distribucin del volumen de las unidades funcionales
Por los servicios que se atienden
Servidores de archivos
Servidores de bases de datos
Servidores de transacciones
Servidores de Groupware
Servidores de objetos
Servidores Web
Cliente
Servidor
Solicita
servicio
Enva
resultados
Procesa
solicitud
Aplicacin
VB, C#, PB, Java
Sentencia
SQL
Ejecuta
Sentencia
SQL
SQLServer
MySql
Server
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 3
Capa de servicios
Capa de usuario
Capa de
datos
Por la distribucin de unidades funcionales en capas
1. Dos capas
2. Tres capas
Fsico
Lgico
Fsico
Lgico
Capa de usuario
Capa de
datos
Capa de servicios
del negocio
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 4
Cliente
Servidor
Middleware
3. N - capas
Por la distribucin del volumen de las unidades funcionales
1. Servidor amplio o Cliente delgado (Thin Web Client)
La mayor parte de la lgica del negocio se encuentra en el lado de los servidores
El cliente bsicamente contiene los servicios de usuario (interfaz y lgica para validacin de
ingreso de datos)
Los servidores soportan la mayor carga de procesamiento de los algoritmos principales requeridos
para el cumplimiento de las reglas del negocio
2. Cliente grueso (Thick Web Client)
La mayor parte de la lgica del negocio se encuentra en el lado del cliente
El cliente contiene los principales algoritmos, adems de la validacin del ingreso de datos
Los servidores se dedican casi exclusivamente a procesar las solicitudes de datos de los clientes
Elementos de construccin
Tres elementos bsicos de construccin:
Fsico
Lgico
Capa de usuario
Capa de
datos
Capa de servicios del
negocio
Capa de servicios de
Internet
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 5
El elemento Cliente
Corre en un SO con GUI o OOUI; Acceso a servicios distribuidos
El elemento Servidor
Corre sobre un paquete comercial de software servidor, Depende del SO
El elemento Middleware
Corre tanto en el Cliente como en el Servidor
Tres categoras:
Pilas de transporte (TCP/IP, NetBIOS, etc.)
Sistemas Operativos de Redes (UNIX, Windows 2000, etc.)
Middleware de servicios especficos (ODBC, ORB, etc.)
Trabajo Prctico Java NetBeans
Implementar un sistema que cumpla con los siguientes requerimientos:
Menu de acceso a los elementos al sistema
Trabajo con jTable (Mantenimiento al control)
Traspasar informacin de un jFrame a otro jFrame
Implementar el Sistema de Ventas
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 6
CASO PRCTICO: Diseo de la Base de Datos
Desarrollar:
1. Teniendo en cuenta el diagrama de casos de uso, disear la Base de datos y
migrarla al SQL Server 20xx
Reporte de ponentes
Verificar parti cipante
Verificar tipo partici pante
Verificar matricul a
Verificar seminario
Regi strar partici pante
Regi strar ti po parti cipante
Regi strar matri cula
Regi strar seminari o
<<i ncl ude>>
<<i ncl ude>>
<<i ncl ude>>
<<include>>
<<i ncl ude>>
<<i ncl ude>>
<<i ncl ude>>
Verificar ponentes Registrar ponentes
Asignar ponentes al seminario
<<include>>
<<include>>
<<include>>
Reporte de Seminarios
Coordinador
Reporte de ponentes x seminario
Reportes de participantes x tipo
Asistente
Reporte de Matriculados x
Seminario
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 7
Caso Prctico: Diseo de la Base de Datos
La empresa Betos Producciones, le ha solicitado a Ud implementar un sistema
informtico para llevar el control de las ventas de entradas a los diferentes eventos que
estarn organizados por Betos Produccin, es necesario tener informacin de las
personas que adquieren las entradas a los diferentes eventos, cada evento tiene una
forma de pago diferente, es decir los costos son diferentes entre los eventos, esto
depende de los tipos de entrada y del evento. Debe de existir un programa de todos los
eventos por fecha indicando el lugar donde se realizara dicho evento y la hora, gracias a
este sistema Betos Producciones llevara un mejor control de las ventas de entradas y de
la programacin de los eventos.
Betos desea colocar muchas terminales de ventas de entradas para de esta forma poder
captar ms clientes.
Se les pide que emita reportes de las ventas realizadas por cada evento y del ingreso por
cada evento.
Desarrollar:
1. Modelo conceptual, lgico y fsico de la Base de datos
2. Migrarlo al SGBD Sql Server 20xx
Disear la siguiente Base de Datos en SQL Server (VENTAS.MDF)
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 8
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 9
Java Database Connectivity
JDBC es un conjunto de clases que permite a las aplicaciones escritas en Java conectarse a los sistemas
de manejo de bases de datos estndares.
Utilizando JDBC, las aplicaciones pueden recuperar y almacenar informacin en bases de datos
utilizando el Lenguaje de Consultas Estructurado (SQL)
Libreras para trabajar con acceso a datos:
import java.sql.*;
Clases de acceso a datos
java.sql.Connection: Sirve para conectarse a una base de datos de SQL Server, etc.
java.sql.Statement: Sirve para enviar comandos de ejecucin desde la aplicacin a la base de
datos.
java.sql. ResultSet: Sirve para almacenar los resultados devueltos desde la base de datos como
consecuencia de alguna consulta realizada.
Como conectarse desde java a SQLServer - ODBC
Paso 1: Panel de Control \ ODBC
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 10
Paso 2: Seleccionar la opcin agregar y seleccionar el origen de datos SQL Server
Paso 3: Al seleccionar finalizar se mostrara la siguiente pantalla, en el cual llenaremos los
siguientes datos
Nombre del
ODBC.
odbcNombre BD
Nombre del
Servidor
. / (local)
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 11
Paso 4: Al presionar Siguiente, se mostrara la siguiente pantalla.
Paso 5: Al presionar Siguiente, se mostrara la siguiente pantalla, donde deber de prender el
primer Check(Establecer la siguiente BD como predeterminada), y luego seleccionar nuestra BD.
Paso 6: Al presionar Siguiente, se mostrara la siguiente pantalla.
OJO,
nuestra
BD
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 12
Paso 7: Al presionar Finalizar, se mostrara la siguiente pantalla.
Paso 8: Finalmente si quieren comprobar que todo est bien, presionar el botn Probar origen
de datos y deber de mostrarse la siguiente pantalla.
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 13
Paso 9: Ufffffffffffffffffffffffffffffffffff, por fin terminamos.. ya cree mi ODBC, que
fcil estaba todo esto......., me gusta programar en Java.
ODBC creado.
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 14
Manejo de excepciones en Java
Una excepcin es un evento que ocurre durante la ejecucin de un programa que rompe el flujo
normal de ejecucin. Cuando se habla de excepciones nos referimos a evento excepcional.
Muchas cosas pueden generar excepciones: Errores de hardware (falla de disco), de programa
(acceso fuera de rango en arreglo), apertura de archivo inexistente, etc.
Cuando se produce una excepcin dentro de un mtodo de Java, ste crea un objeto que
contiene informacin sobre la excepcin y lo pasa al cdigo llamador.
La rutina receptora de la excepcin es responsable de reaccionar a tal evento inesperado.
Cuando creamos un objeto para la excepcin y lo pasamos al cdigo llamador decimos que
lanzamos una excepcin (Throw an exception)
Si el metodo llamador no tiene un manejador de la excepcin se busca hacia atrs en la pila de
llamados anidados hasta encontrarlo.
Decimos que el manejador atrapa la excepcin (catch the exception)
Manejo de Excepciones
El manejo de excepciones se logra con el bloque try
try {
// cdigo
} catch (Exception e )
{
// cdigo que se hace cargo del error reportado en e
}
El bloque try puede manejar mltiples excepciones:
try {
// cdigo
} catch (StackError e )
{
// cdigo para manejar el error de stack
} catch (MathError me)
{
// cdigo para manejar el error matemtico indicado en me.
}
Captura de Excepciones (completo)
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 15
El bloque try tiene la forma general:
try {
//sentencias
} catch (e-type1 e ) {
// sentencias
} catch (e-type2 e ) {
// sentencias
} ...
finally {
//sentencias
}
La clusula finally es ejecutada con posterioridad cualquiera sea la condicin de trmino del try
(sin o con error). Esta seccin permite dejar las cosas consistentes antes del trmino del bloque
try.
Ejemplo: Divisin de nmeros
private void btndividirActionPerformed(java.awt.event.ActionEvent evt) {
double n1,n2,d;
try{
n1=Double.parseDouble(txtn1.getText());
n2=Double.parseDouble(txtn2.getText());
d=n1/n2;
txtr.setText(String.valueOf(d));
}catch(Exception ex)
{
JOptionPane.showMessageDialog(rootPane, ex.getMessage());
}
}
Lgica correcta
Controlar error
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 16
Conectar el ODBC con JAVA
package agenda;
//Paso 1: importar las librerias de acceso a datos
import java.sql.*;
import javax.swing.JOptionPane;
public class frmconectar extends javax.swing.JFrame {
//Paso 2: crear variables de acceso a datos
Connection con;
public frmconectar() {
initComponents();
}
//Paso 3: Crear un mtodo para la conexin de la BD
private void conectar()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:odbcventas","sa","");
JOptionPane.showMessageDialog(rootPane,"Yeeeeeee, logre conectar Java con mi BD",
"Felicidades",JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane, ex.getMessage());
}
}
private void btnconectarActionPerformed(java.awt.event.ActionEvent evt) {
//Paso 4: llamar al metodo conectar
conectar();
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 17
Como conectarse desde java a MySql
package conectarmysql;
import javax.swing.JOptionPane;
import java.sql.*;
public class frmconectar extends javax.swing.JFrame {
String bd="ventas";
String login="root";
String clave="";
String url="jdbc:mysql://localhost/"+bd;
Connection con;
private void btnconectarActionPerformed(java.awt.event.ActionEvent evt) {
try
{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection(url,login,clave);
JOptionPane.showMessageDialog(null, "Conexion exitosa", "Base Datos",
JOptionPane.INFORMATION_MESSAGE);
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Conexion No exitosa", "Base Datos",
JOptionPane.INFORMATION_MESSAGE);
}
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 18
LENGUAJE DE MANIPULACIN DE DATOS
1. DEFINICIN:
Se conoce con este nombre a un conjunto de sentencias que permite extraer o modificar los datos de
las tablas almacenadas en una base de datos.
Las cuatro sentencias principales del manejo de datos son:
SELECT
INSERT
UPDATE
DELETE
Consultas Bsicas
La Utilidad de las bases de datos relacionales es permitir a los usuarios consultar o acceder a los datos
almacenados en ellas de una manera sencilla e intuitiva.
BASE
DATOS
Resultados
Requerimientos
SQL Server
ORACLE
MySql
Transact-
Applicacin
Cliente
Visual Basic
C#
PowerBuilder
Java
L
Modelo Datos
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 19
TIPO DE SENTENCIAS:
2. SELECT
2.1. Definicin
Obtiene las filas de la base de datos y permite realizar la seleccin de una o varias filas o
columnas de una o varias tablas. hay tres componentes bsicos en la instruccin SELECT:
SELECT, FROM y WHERE.
2.2. Sintaxis Bsica
SELECT * | lista_columnas
FROMtabla
[ WHERE condicin_filas ]
Donde:
lista_columnas es la lista de columnas a mostrar en el resultado de la consulta. Si se
especifica * se mostrarn todas las columnas de la tabla.
condicin_filas es una expresin lgica que indica que las filas a mostrar son aquellas
para las que el valor de la expresin es verdadero.
2.3. Clusulas
2.3.1. Select:
Especifica las columnas que va a devolver la consulta.
Argumentos:
DISTINCT: Especifica que slo pueden aparecer filas exclusivas en el conjunto de
resultados. Los valores NULL se consideran iguales a efectos de la palabra clave
DISTINCT.
2.3.2. From
Especifica las tablas de las que se van a obtener filas. La clusula FROM es necesaria
excepto cuando la lista de seleccin slo contiene constantes, variables y expresiones
aritmticas (no nombres de columna).
2.3.3. Where
Especifica una condicin de bsqueda para restringir las filas que se van a devolver.
Argumentos:
LIKE: Determina si una cadena de caracteres dada coincide o no con un
determinado modelo. Un modelo puede incluir caracteres normales y caracteres
comodn.
Carcter %: Cualquier cadena de cero o ms caracteres.
Ejemplo: WHERE apellidos LIKE '%ana%'
Busca todos los apellidos de los alumnos que contengan la palabra 'ana'
en cualquier parte de los apellidos.
BETWEEN: Especifica un intervalo inclusivo de valores. Utilice AND para
separar los valores inicial y final.
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 20
Formato de una consulta en Java - NetBeans
1. Llamar al mtodo conectar(Mtodo creado para la conexin de la Base de Datos)
conectar();
2. Crear la(s)variables que se vayan a utilizar en las consultas
String valor=txtdireccion.getText();
3. Utilizar el controlador de errorstry{}catch(Exception ex){}
try{
4. Crear la consulta SQL Select . From Where
String sql="select * from cliente where dir_cli='"+valor+"'";
5. Crear el objeto Statement
stmt=con.createStatement();
6. Ejecutar la consulta
rs=stmt.executeQuery(sql);
7. Mostrar la informacion mostrar la data en un objeto JTable
while(rs.next())
{
String[]datos=new String[4];
datos[0]=rs.getString(1);
datos[1]=rs.getString(2);
datos[2]=rs.getString(3);
datos[3]=rs.getString(4);
tdatos.addRow(datos);
}
8. Cerrar la conexion y el Statement
con.close();
stmt.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 21
Ejemplos de consultas SQL con Java NetBeans
1. Mostrar todos los clientes cuya direccin sea
igual a un valor ingresado por el usuario.
package agenda;
import javax.swing.table.*;
import java.sql.*;
import javax.swing.JOptionPane;
public class frmconsulta extends javax.swing.JFrame {
public Connection con;
public ______________________ stmt;
public ResultSet rs;
DefaultTableModel tdatos=new DefaultTableModel();
public frmconsulta() {
initComponents();
String titulos[]={"Codigo","Nombres","Apellidos","Titulos"};
tdatos.setColumnIdentifiers(titulos);
_____________________________________
}
private void conectar()
{
try
{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("_____________________________","sa","");
JOptionPane.showMessageDialog(rootPane,"Conexion exitosa", "Base Datos",
JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.___________________________());
}
}
private void btnmostrarActionPerformed(java.awt.event.ActionEvent evt) {
conectar();
String valor=txtdireccion.getText();
try{
String sql="select * from cliente where dir_cli='"+valor+"'";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
limpiartabla()
while(rs.next()){
String[]datos=new String[4];
datos[0]=rs.getString(1);
datos[1]=rs.getString(2);
datos[2]=rs.getString(3);
datos[3]=rs.getString(4);
tdatos.addRow(datos);
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 22
con.close();
stmt.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
private void limpiartabla()
{
int x=tdatos.getRowCount();
for (int i = 0; i < x; i++) {
_________________________________________
}
}
}
2. Mostrar todos los datos de la tabla producto, donde el precio de venta este entre dos valores
private void btnmostrarActionPerformed(java.awt.event.ActionEvent evt) {
conectar();
String p1=txtp1.getText();
String p2=txtp2.getText();
try{
String sql="select * from producto where pre_pro between '"+ p1 +"' AND '"+ p2 +"'";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
_____________________________________;
datos[0]=rs.getString(1);
datos[1]=rs.getString(2);
datos[2]=rs.getString(3);
datos[3]=___________________;
___________________________________;
}
con.close();
stmt.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 23
3. Mostrar todos los datos de la tabla cliente donde su apellido paterno empiece con algn carcter
ingresado por el usuario
private void btnmostrarActionPerformed(java.awt.event.ActionEvent evt) {
int t;
conectar();
String valor=txtapellidos.getText();
try{
String sql="select * from cliente where ape_cli like '"+valor+"%'";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
_______________________
_______________________
_______________________
_______________________
_______________________
_______________________
t=tbldatos.getRowCount();
txttotal.setText(String.valueOf(t));
}
con.close();
stmt.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
Trabajo Prctico
Desarrollar las siguientes consultas SQL en el Lenguaje de programacin JAVA, utilizando la Base de
Datos Ventas.
1. Mostrar todos los datos de la tabla venta donde la fecha de venta se encuentre entre un rango de
valores ingresados por el usuario
2. Mostrar todos los datos de la tabla producto donde la descripcin empiece con algn carcter
ingresado por el usuario.
3. Mostrar todos los datos de la tabla producto donde el precio de venta este entre dos valores
4. Mostrar Nombre, apellidos y direccin del cliente donde la direccin sea igual a una direccin
ingresada
5. Mostrar Nombre y Apellidos de la tabla Vendedor donde el apellido paterno empiece con algn
carcter ingresado
6. Seleccionar todos los campos de la tabla cliente donde su apellidos empiecen con algn carcter
ingresado por el usuario y su direccin sea igual a una direccin seleccionada por el usuario.
Mostrar el total de registros.
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 24
7. Seleccionar todos los campos de la tabla producto donde la descripcin empiecen con algn
carcter ingresado por el usuario y su precio de venta sea mayor a un valor ingresado por el usuario.
Mostrar el total de registros.
8. Disear la siguiente venta y programar las consultas.
Nota: Las consultas deben de estar inmersas dentro de una opcin de Menu (Consultas), las cuales se
acceder con una pantalla de seguridad que se encuentre validado para 3 intentos. (debe de validar a
los usuarios con una tabla usuario de la base de datos).
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 25
CONSULTAS A MULTIPLES TABLAS
En la sesin anterior las consultas solo hacen referencia a los datos almacenados en una sola tabla. En
el caso de que las consultas requieran datos de ms de una tabla debemos utilizar las uniones.
UNIENDO MULTIPLES TABLAS
Una unin permite combinar columnas de diferentes tablas y devolver una tabla de de resultados. Por
ejemplo se tiene las tablas Clientes y Facturas. Una consulta valida seria Mustrame el nombre de los
clientes con sus respectivas facturas, la informacin pedida no se encuentra en ninguna de las dos
tablas, por lo tanto es necesario utilizar las uniones para unir las tablas en las cuales esta la
informacin requerida.
Seleccionar Columnas de Multiples Tablas
JOIN.- especifica las tablas que sern unidas y como se unirn.
ON.- especifica la condicin de unidad.
Consultar dos o mas tablas para producir un resultado
Use claves primarias y forneas como condiciones de unin.
Use columnas comunes para especificar unin entre tablas
La tabla clientes tiene una columna cod_cli que es la clave primaria e identifica a un cliente. La tabla
facturas tiene una columna cod_cli que es una clave fornea, e identifica al cliente que se le emiti la
factura.
INNER JOINS(Combinaciones Internas)
Estas combinaciones usan un operador de comparacin para hacer coincidir las filas de dos tablas
segn los valores de las columnas comunes de cada tabla.
Ejemplo:1
Muestra el nombre de los clientes y sus facturas respectivas ordenadas por el nombre del cliente.
Sin Alias
select cliente.nom_cli,factura.num_fac,factura.fec_fac from cliente inner join factura
on cliente.cod_cli=factura.cod_cli order by cliente.nom_cli;
Con alias
select c.cod_cli,nom_cli,num_fac,fec_fac from cliente as c inner join factura as f
on c.cod_cli=f. cod_cli order by c.nom_cli;
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 26
Ejercicios desarrollados de consultas SQL de mltiples tablas
1. Mostrar cdigo, nombre y apellidos del cliente y la fecha de venta, segn un apellidos
seleccionado
package agenda;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
import javax.swing.JOptionPane;
public class frmconcliente extends
javax.swing.JFrame {
public _______________ con;
public _______________ stmt;
public _______________ rs;
DefaultTableModel tdatos=new DefaultTableModel();
public frmconcliente() {
initComponents();
____________________________________________________________
tdatos.setColumnIdentifiers(titulos);
________________________________
direccion();
}
private void conectar()
{
try
{
______________________________________________________________
con=DriverManager.getConnection("_______________________________________");
JOptionPane.showMessageDialog(rootPane,"Conexion exitosa","Base Datos",
JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 27
private void btnmostrarActionPerformed(java.awt.event.ActionEvent evt) {
int t;
conectar();
String valor=(String)cbodireccion.getSelectedItem();
try{
String sql="select c.nom_cli,c.ape_cli,c.dir_cli,v.fec_ven from cliente as c
inner join venta as v on(c.cod_cli=v.cod_cli)where c.dir_cli = '"+valor+"'";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(____________________________){
_________________________________
datos[0]=rs.getString(1);
datos[1]=rs.getString(2);
datos[2]=rs.getString(3);
datos[3]=rs.getString(4);
_______________________________
t=tbldatos.getRowCount();
txttotal.setText(String.valueOf(t));
}
con.close();
stmt.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
private void direccion()
{ conectar();
try{
String sql="select distinct dir_cli from cliente";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
__________(rs.next()){
cbodireccion.addItem(rs.getString(1));
}
con.__________________();
stmt.__________________();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 28
2. Mostrar todos los campos de la tabla detventa donde el cdigo del producto sea igual a un valor
seleccionado por el usuario, mostrar la cantidad de registros.
3. Consulta que muestre que clientes compraron entre un rango de fechas
4. Mostrar al vendedor que atendieron a los clientes y la fecha de venta segn el apellido del vendedor
(bsqueda interactiva)
5. Mostrar los productos que se llev el cliente segn el nmero de factura seleccionado
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 29
Trabajo Consultas SQL - JAVA
Desarrollar un Sistema que contenga las siguientes pantallas y consultas
a. Implementar la pantalla de seguridad, deber de estar validada con una tabla usuario, y adems
deber de soportar solo 3 intentos. (4 ptos)
b. Disear la siguiente Base de Datos (Hospital) (1 ptos)
c. Disear un Menu que contenga 3 opciones, segn Ud. Crea conveniente.
d. Una opcin del men deber de llamar al siguiente formulario, donde:
Deber de permitir buscar a los pacientes de manera iterativa segn la opcin
seleccionada. (2 ptos)
Deber de mostrar los servicio que presta el hospital, estos servicios son de la tabla
servicio (2 ptos)
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 30
El botn Calcular: Ingresado el costo, deber de seleccionar un tipo de paciente
(Asegurado tiene un descuento del 10% y los no asegurados tienen un incremento del 5%.
(2 ptos)
El botn agregar: agregara los elementos a la listas, adems deber de ir incrementndose
el monto total. (2 ptos)
El botn eliminar: al seleccionar a un paciente se eliminara y adems disminuir el monto
total. (3 ptos)
e. Mostrar a todos los pacientes que se atendieron (nombre, apellido, direccin, fecha cita) segn un
servicio seleccionado, adems deber demostrar la cantidad de pacientes. (2 ptos)
f. Mostrar a todos los pacientes que se atendieron segn la direccin del paciente, adems deber
demostrar la cantidad de pacientes (2 ptos)
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 31
ACCESO A DATOS
SENTENCIA DE INSERCIN: INSERT
Definicin
Agrega o inserta una nueva fila a una tabla.
Sintaxis Bsica
INSERT INTO tabla (lista_columnas)
VALUES (valor1, valor2,valorn)
Donde:
lista_columnas se trata de una lista de una o ms columnas en las que se insertarn los
datos; lista_columnas debe estar entre parntesis y delimitada con comas.
valor1, valor2,valorn son los valores que se van a insertar en la tabla.
Clusulas
Into: Es una palabra clave opcional que se puede utilizar entre INSERT y la tabla de destino.
Values: Presenta la lista de valores de datos que se van a insertar. Debe haber un valor de datos para
cada columna definida en lista_columnas (si se especific) o en la tabla. La lista de valores debe estar
entre parntesis.
Si los valores de la lista VALUES no estn en el mismo orden que las columnas de la tabla o no tienen
un valor para cada columna de la tabla, debe utilizarse lista_columnas para especificar explcitamente
la columna que almacena cada valor de entrada.
SENTENCIA DE ACTUALIZACIN: UPDATE
Definicin
Cambia o modifica los datos de una o varias filas de una determinada tabla.
Sintaxis Bsica
UPDATE tabla
SET
Columna1 = valor1,
Columna2 = valor2,
..
Columnan = valorn
[ WHERE condicin_filas ]
Donde:
lista_columnas se trata de una lista de una o ms columnas las cuales sern modificadas
o actualizadas por la lista de valores las cuales deben de estar separadas por coma.
tabla es el nombre de la tabla que va a eliminar las filas.
valor1, valor2,valorn son los valores que se van a ser asignadas a las columnas.
condicin_filas es una expresin lgica que indica que las filas que se van a modificar
son aquellas para las que el valor de la expresin es verdadero.
Clusulas
Set: Especifica la lista de nombres de columnas o variables que se van a actualizar.
Where: Especifica las condiciones que limitan a las filas que se actualizan.
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 32
SENTENCIA DE ELIMINACIN: DELETE
Definicin
Quita o elimina las filas de una tabla.
Sintaxis Bsica
DELETE FROM tabla
[ WHERE condicin_filas ]
Donde:
tabla es el nombre de la tabla que va a modificar los datos.
condicin_filas es una expresin lgica que indica que las filas se van a eliminar son
aquellas para las que el valor de la expresin es verdadero.
Clusulas
From: Se trata de una palabra clave opcional que se puede utilizar entre la palabra clave DELETE.
Where: Especifica las condiciones que limitan a las filas que se eliminaran.
Ejemplos
Insertar un registro a la tabla cliente
insert into Cliente values('1234','Oscar','Ascon','Lima')
select * from cliente
Modificar un registro de la table cliente
update Cliente set nom_cli='Maria Ana',ape_cli='Ascon'
where cod_cli='9'
select * from cliente
Eliminar un registro de la table cliente
delete from Cliente where cod_cli='1234'
select * from cliente
Nota: Toda actualizacin a la Base de datos necesita de una instruccin Select para verificar el
resultado
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 33
ACTUALIZACION DE REGISTROS JAVA NETBEANS - SQLSERVER
1. Actualizar los registros de la tabla cliente
package Ventas;
//Paso 1: Importar las libreras de acceso a datos
import _______________________;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class frmclientito extends javax.swing.JFrame {
//Paso 2: Crear variables de acceso a datos
Connection con;
ResultSet rs;
Statement stmt;
//Paso 4: Crear una variable por cada campo de la tabla
String co,no,ap,di;
DefaultTableModel tdatos=new DefaultTableModel();
public frmclientito() {
initComponents();
String titulos[]={"Codigo","Nombres","Apellidos","Direccion"};
tdatos.setColumnIdentifiers(titulos);
tbldatos.setModel(tdatos);
mostrar();
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 34
//Paso 3: Crear la conexin a la Base de datos, utilizando ODBC
//Para esto vamos a crear un mtodo para conectar la BD
private void conectar(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("___________________________");
}
catch(Exception ex){
JOptionPane.showMessageDialog(rootPane, ex.getMessage());
}
}
//Paso 5: Crear un mtodo que nos permita darle valor a las variables de la tabla
private void llenar()
{
co=txtco.getText();
no=______________________;
ap=______________________;
di=txtdi.getText();
}
//Paso 6: Para ver el resultado de la actualziacion, necesitamos una instruccion Select
private void mostrar(){
String sql;
try{
conectar();
sql="select * from cliente";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(_____________________){
String datos[]=new String[4];
datos[0]=rs.getString(1);
datos[1]=rs.getString(2);
datos[2]=rs.getString(3);
datos[3]=rs.getString(4);
______________________________;
}
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane, ex.getMessage());
}
}
//Paso 7: Crear un mtodo para limpiar la tabla
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 35
private void limpiartabla()
{
int x=tbldatos.getRowCount();
__________________________________________{
________________________________ ;
}
}
private void btngrabarActionPerformed(java.awt.event.ActionEvent evt) {
int rpta;
String sql;
rpta=JOptionPane.showConfirmDialog(rootPane,"Deseas Grabar", "Grabar",
JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);
conectar();
try{
llenar();
sql="insert into cliente values('"+co+"','"+no+"','"+ap+"','"+di+"')";
stmt=con.createStatement();
stmt.execute(sql);
con.close();
stmt.close();
limpiartabla();
mostrar();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane, ex.getMessage());
}
}
Trabajo.
1. Disear un sistema que contenga una ventana de validacin del usuario, una ventana de men,
luego implementar un formulario de mantenimiento por cada tabla de la base de datos ventas.
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 36
Caso prctico:
1. Implementar la siguiente interfaz tanto para el cliente, Vendedor, Venta, Producto; utilizar
diferentes prototipos de pantallas para su implementacin, deber permitir realizar mantenimiento y
bsquedas a la Base de Datos.
2. Implementar la siguiente interfaz para el cliente, que permita realizar mantenimiento y
bsquedas a la Base de Datos
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 37
PROGRAMACION ORIENTADA A OBJETOS
Clases
Conceptos de clase y objeto
Java es un lenguaje orientado a objetos puro, lo que significa que todo con lo que vamos a trabajar en
este lenguaje son objetos. Un objeto es un agregado de datos y de mtodos que permiten manipular
dichos datos, y un programa en Java no es ms que un conjunto de objetos que interaccionan unos con
otros a travs de sus mtodos.
Una clase es la definicin de las caractersticas concretas de un determinado tipo de objetos. Es decir,
de cules son los datos y los mtodos de los que van a disponer todos los objetos de ese tipo. Por esta
razn, se suele decir que el tipo de dato de un objeto es la clase que define las caractersticas del
mismo.
Sintaxis de definicin de clases
La sintaxis bsica para definir una clase es la que a continuacin se muestra:
class <nombreClase>
{
<miembros>
}
De este modo se definira una clase de nombre <nombreClase> cuyos miembros son los definidos en
<miembros> Los miembros de una clase son los datos y mtodos de los que van a disponer todos los
objetos de la misma. Un ejemplo de cmo declarar una clase de nombre A que no tenga ningn
miembro es la siguiente:
class A
{}
Campos: Un campo es un dato comn a todos los objetos de una determinada clase. Para
definir cules son los campos de los que una clase dispone se usa la siguiente sintaxis dentro de
la zona sealada como <miembros> en la definicin de la misma:
<tipoCampo> <nombreCampo>;
class Persona
{
string Nombre; // Campo de cada objeto Persona que almacena su nombre
int Edad; // Campo de cada objeto Persona que almacena su edad
string DNI; // Campo de cada objeto Persona que almacena su DNI
}
Para acceder a un campo de un determinado objeto se usa la sintaxis:
<objeto>.<campo>
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 38
Por ejemplo, para acceder al campo Edad de un objeto Persona llamado p y cambiar su
valor por 20 se hara:
p.Edad = 20;
Mtodos: Un mtodo es un conjunto de instrucciones a las que se les asocia un nombre de
modo que si se desea ejecutarlas basta referenciarlas a travs de dicho nombre en vez de tener
que escribirlas. Dentro de estas instrucciones es posible acceder con total libertad a la
informacin almacenada en los campos pertenecientes a la clase dentro de la que el mtodo se
ha definido, por lo que como al principio del tema se indic, los mtodos permiten manipular
los datos almacenados en los objetos.
La sintaxis que se usa en Java para definir los mtodos es la siguiente:
<tipoDevuelto> <nombreMtodo> (<parametros>)
{
<instrucciones>
}
Todo mtodo puede devolver un objeto como resultado de la ejecucin de las instrucciones que
lo forman, y el tipo de dato al que pertenece este objeto es lo que se indica en <tipoDevuelto>. Si
no devuelve nada se indica void, y si devuelve algo es obligatorio finalizar la ejecucin de sus
instrucciones con alguna instruccin return <objeto>; que indique qu objeto ha de devolverse.
Un ejemplo de cmo declarar un mtodo de nombre Cumpleaos es la siguiente modificacin
de la definicin de la clase Persona usada antes como ejemplo:
class Persona
{
string Nombre; // Campo de cada objeto Persona que almacena su nombre
int Edad; // Campo de cada objeto Persona que almacena su edad
string DNI; // Campo de cada objeto Persona que almacena su DNI
void Cumpleaos() // Incrementa en uno de la edad del objeto Persona
{
Edad++;
}
}
La sintaxis usada para llamar a los mtodos de un objeto es la misma que la usada para llamar a
sus campos, slo que ahora tras el nombre del mtodo al que se desea llamar hay que
indicar entre parntesis cules son los valores que se desea dar a los parmetros del mtodo al
hacer la llamada. O sea, se escribe:
<objeto>.<mtodo>(<parmetros>)
Como es lgico, si el mtodo no tomase parmetros se dejaran vacos los parmetros en
la llamada al mismo. Por ejemplo, para llamar al mtodo Cumpleaos() de un objeto Persona llamado
p se hara:
p.Cumpleaos(); // El mtodo no toma parmetros, luego no le pasamos ninguno
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 39
Es importante sealar que en una misma clase pueden definirse varios mtodos con el mismo
nombre siempre y cuando tomen diferente nmero o tipo de parmetros. A esto se le conoce
como sobrecargar de mtodos, y es posible ya que cuando se les llame el compilador sabr a
cual llamar a partir de <parmetros> pasados en la llamada.
Creacin de objetos
Operador new
La utilidad del operador new, que precisamente es crear objetos y cuya sintaxis es:
new <nombreTipo>(<parametros>)
Este operador crea un nuevo objeto del tipo cuyo nombre se le indica y llama durante su proceso de
creacin al constructor del mismo apropiado segn los valores que se le pasen en <parametros>,
devolviendo una referencia al objeto recin creado. Hay que resaltar el hecho de que new no devuelve
el propio objeto creado, sino una referencia a la direccin de memoria dinmica donde en realidad se
ha creado.
El constructor recibe ese nombre debido a que su cdigo suele usarse precisamente para construir el
objeto, para inicializar sus miembros. Por ejemplo, a nuestra clase de ejemplo Persona le podramos
aadir un constructor dejndola as:
class Persona
{
string Nombre; // Campo de cada objeto Persona que almacena su nombre
int Edad; // Campo de cada objeto Persona que almacena su edad
string DNI; // Campo de cada objeto Persona que almacena su DNI
void Cumpleaos() // Incrementa en uno la edad del objeto Persona
{
Edad++;
}
Persona (string nombre, int edad, string dni) // Constructor
{
Nombre = nombre;
Edad = edad;
DNI= dni;
}
}
Como se ve en el cdigo, el constructor toma como parmetros los valores con los que deseemos
inicializar el objeto a crear. Gracias a l, podemos crear un objeto Persona de nombre Jos, de 22 aos
de edad y DNI 32734949 as:
new Persona(Jos, 22, 32734949)
En realidad un objeto puede tener mltiples constructores, aunque para diferenciar a unos de otros es
obligatorio que se diferencien en el nmero u orden de los parmetros que aceptan, ya que el nombre
de todos ellos ha de coincidir con el nombre de la clase de la que son miembros. De ese modo, cuando
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 40
creemos el objeto el compilador podr inteligentemente determinar cul de los constructores ha de
ejecutarse en funcin de los valores que le pasemos al new.
Una vez creado un objeto lo ms normal es almacenar la direccin devuelta por new en una variable
del tipo apropiado para el objeto creado. El siguiente ejemplo -que como es lgico ir dentro de la
definicin de algn mtodo- muestra cmo crear una variable de tipo Persona llamada p y cmo
almacenar en ella la direccin del objeto que devolvera la anterior aplicacin del operador new:
Persona p; // Creamos variable p
p = new Persona(Jose, 22, 32734949); // Almacenamos en p el objeto creado con new
Constructor por defecto
No es obligatorio definir un constructor para cada clase, y en caso de que no definamos ninguno el
compilador crear uno por nosotros sin parmetros ni instrucciones. Es decir, como si se hubiese
definido de esta forma:
<nombreTipo>()
{
}
Gracias a este constructor introducido automticamente por el compilador, si Coche es una clase en
cuya definicin no se ha incluido ningn constructor, siempre ser posible crear uno nuevo usando el
operador new as:
Coche c = new Coche(); // Crea coche c llamando al constructor por defecto de Coche
Hay que tener en cuenta una cosa: el constructor por defecto es slo incluido por el compilador si no
hemos definido ningn otro constructor. Por tanto, si tenemos una clase en la que hayamos definido
algn constructor con parmetros pero ninguno sin parmetros no ser vlido crear objetos de la
misma llamando al constructor sin parmetros, pues el compilador no lo habr definido
automticamente. Por ejemplo, con la ltima versin de la clase de ejemplo Persona es invlido hacer:
Persona p = new Persona(); // ERROR: El nico constructor de persona toma 3 parmetros
Herencia
Concepto de herencia
El mecanismo de herencia es uno de los pilares fundamentales en los que se basa la programacin
orientada a objetos. Es un mecanismo que permite definir nuevas clases a partir de otras ya definidas
de modo que si en la definicin de una clase indicamos que sta deriva de otra, entonces la primera -a
la que se le suele llamar clase hija- ser tratada por el compilador automticamente como si su
definicin incluyese la definicin de la segunda a la que se le suele llamar clase padre o clase base.
Las clases que derivan de otras se definen usando la siguiente sintaxis:
class <nombreHija>extends <nombrePadre>
{
<miembrosHija>
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 41
A los miembros definidos en <miembrosHijas> se le aadirn los que hubisemos definido en la clase
padre. Por ejemplo, a partir de la clase Persona puede crearse una clase Trabajador as:
class Trabajador extends Persona
{
public int Sueldo;
public Trabajador(string nombre, int edad, string nif, int sueldo)
: base(nombre, edad, nif)
{
Sueldo = sueldo;
}
}
Los objetos de esta clase Trabajador contarn con los mismos miembros que los objetos Persona y
adems incorporarn un nuevo campo llamado Sueldo que almacenar el dinero que cada trabajador
gane.
Un ejemplo que pone de manifiesto cmo funciona la herencia es el siguiente:
class Persona
{
public string Nombre; // Campo de cada objeto Persona que almacena su nombre
public int Edad; // Campo de cada objeto Persona que almacena su edad
public string DNI; // Campo de cada objeto Persona que almacena su DNI
void Cumpleaos() // Incrementa en uno de edad del objeto Persona
{
Edad++;
}
public Persona (string nombre, int edad, string nif) // Constructor de Persona
{
Nombre = nombre;
Edad = edad;
NIF = nif;
}
}
class Trabajador extends Persona
{
public int Sueldo; // Campo de cada objeto Trabajador que almacena cunto gana
Trabajador(string nombre, int edad, string dni, int sueldo)
{ // Inicializamos cada Trabajador en base al constructor de Persona
Sueldo = sueldo;
}
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 42
Programacin Orientada a Objetos
Diagrama de clases
package Clases;
import javax.swing.JOptionPane;
public class Cliente {
private String dni;
private String nombre;
private String apellido;
private String direccion;
private double sueldo;
public Cliente() {
}
public Cliente(String dni, String nombre, String apellido, String direccion, double sueldo) {
this.dni = dni;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
this.sueldo = sueldo;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
Cliente
dni : String
nombre : String
apellido : String
direccion : String
sueldo : double
Agregar()
Calcular()
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 43
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public double getSueldo() {
return sueldo;
}
public void setSueldo(double sueldo) {
this.sueldo = sueldo;
}
///////////////Metodos////////////////
public void agregar()
{
JOptionPane.showMessageDialog(null, "Cliente: "+nombre+" "+apellido,"Agregar",
JOptionPane.INFORMATION_MESSAGE);
}
public double descuento()
{
double x;
x=sueldo*0.10;
return x;
}
}
Formulario Cliente
package Formularios;
import Clases.Cliente;
public class frmcliente extends javax.swing.JFrame {
private Cliente oc=new Cliente();
JAVA - NetBeans
Ing. Oscar Ascn Valdivia 44
private void llenar()
{
oc.setDni(txtdni.getText());
oc.setNombre(txtnom.getText());
oc.setApellido(txtape.getText());
oc.setDireccion(txtdir.getText());
oc.setSueldo(Double.parseDouble(txtsue.getText()));
}
private void btnagregarActionPerformed(java.awt.event.ActionEvent evt) {
llenar();
oc.agregar();
}
private void btndescuentoActionPerformed(java.awt.event.ActionEvent evt) {
llenar();
txtdes.setText(String.valueOf(oc.descuento()));
}
}
Practica:
1. Implementar el siguiente diagrama de clases (Usar clases de acceso a datos)
2. Implementar el diagrama de clases de su proyecto
Alumno
codigo : String
nombre : String
apellido : String
email : String
Asignardatos()
Agregar()
Secretaria
dni
nombre
apellido
sueldo
afiliacion
Asignardatos()
Calcularsueldo()
Matricula
Codigo
Fecha
Observacion
1..*
1
1
1..*
Curso
codigo
descripcion
costo
Asignardatos()
Agregar()
1
1..*
1
1..*
1
1..*
1..*
1