Vous êtes sur la page 1sur 19

FACULTAD DE INGENIERÍA Y

CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

PROYECTO PERSISTENCIA Y DATOS TRANSACCIONALES

SEGUNDA ENTREGA

TUTOR:
Alexis Rojas Cordero

Javier José Hernández Torregroza Código: 1411025812

Fernando Rodríguez Caro Código: 1311070271

INSTITUCIÓN UNIVERSITARIA POLITÉCNICO GRANCOLOMBIANO


2018 - COLOMBIA
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

Contenido

1. Modelo Entidad Relación.............................................................................................3


2. Script Creación Base de datos...................................................................................5
3. Estado del Arte..............................................................................................................8
3.1. Sockets....................................................................................................................8
3.2. Arquitectura Cliente / Servidor.............................................................................9
3.3. Conexión...............................................................................................................10
3.4. Servidor.................................................................................................................12
3.5. Cliente...................................................................................................................13
3.6. Diagrama de Flujo...............................................................................................13
3.7. Ejemplo.................................................................................................................15
4. Utilización de Sockets................................................................................................16
4.1. Clase Conectar....................................................................................................16
4.2. Scripts....................................................................................................................17
5 Referencias................................................................................................................19

1.
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

Modelo Entidad Relación


FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

Script Creación Base de Datos

CREATE DATABASE  IF NOT EXISTS `bancoxyz` /*!40100 DEFAULT CHARACTER SET
utf8 */;
USE `bancoxyz`;
-- MySQL dump 10.13  Distrib 5.7.17, for Win64 (x86_64)
--
-- Host: 127.0.0.1 Database: bancoxyz
-- ------------------------------------------------------
-- Server version  5.7.22-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;


/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'
*/;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `ciudad`
--

DROP TABLE IF EXISTS `ciudad`;


/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ciudad` (
 `idciudad` int(11) NOT NULL,
 `nombre_ciudad` varchar(45) NOT NULL,
 `idpais` int(11) NOT NULL,
 PRIMARY KEY (`idciudad`),
 KEY `fk_ciudad_pais_idx` (`idpais`),
 CONSTRAINT `fk_ciudad_pais` FOREIGN KEY (`idpais`) REFERENCES `pais`
(`idpais`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

--
-- Table structure for table `cliente`
--

DROP TABLE IF EXISTS `cliente`;


/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `cliente` (
 `idcliente` int(12) NOT NULL AUTO_INCREMENT,
 `identificacion` varchar(45) NOT NULL,
 `nombre_cliente` varchar(45) NOT NULL,
 `apellido_cliente` varchar(45) NOT NULL,
 `dirección_cliente` varchar(45) NOT NULL,
 `telefono_cliente` varchar(45) NOT NULL,
 `idciudad` int(11) NOT NULL,
 `saldo_idsaldo` int(11) NOT NULL,
 PRIMARY KEY (`idcliente`),
 KEY `fk_cliente_ciudad1_idx` (`idciudad`),
 KEY `fk_cliente_saldo1_idx` (`saldo_idsaldo`),
 CONSTRAINT `fk_cliente_ciudad1` FOREIGN KEY (`idciudad`) REFERENCES
`ciudad` (`idciudad`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `fk_cliente_saldo1` FOREIGN KEY (`saldo_idsaldo`) REFERENCES
`saldo` (`idsaldo`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `movimiento`
--

DROP TABLE IF EXISTS `movimiento`;


/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `movimiento` (
 `idmovimiento` int(11) NOT NULL AUTO_INCREMENT,
 `fecha_movimiento` date NOT NULL,
 `valor_movimiento` varchar(45) NOT NULL,
 `idsaldo` int(11) NOT NULL,
 PRIMARY KEY (`idmovimiento`),
 KEY `fk_movimiento_saldo1_idx` (`idsaldo`),
 CONSTRAINT `fk_movimiento_saldo1` FOREIGN KEY (`idsaldo`) REFERENCES
`saldo` (`idsaldo`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `pais`
--

DROP TABLE IF EXISTS `pais`;


FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

/*!40101 SET @saved_cs_client     = @@character_set_client */;


/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `pais` (
 `idpais` int(11) NOT NULL,
 `nombre_pais` varchar(45) NOT NULL,
 PRIMARY KEY (`idpais`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `producto`
--

DROP TABLE IF EXISTS `producto`;


/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `producto` (
 `idproducto` int(11) NOT NULL,
 `tipo_producto` varchar(45) NOT NULL,
 PRIMARY KEY (`idproducto`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `saldo`
--

DROP TABLE IF EXISTS `saldo`;


/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `saldo` (
 `idsaldo` int(11) NOT NULL AUTO_INCREMENT,
 `saldo` float NOT NULL,
 `idproducto` int(11) NOT NULL,
 PRIMARY KEY (`idsaldo`),
 KEY `fk_saldo_producto1_idx` (`idproducto`),
 CONSTRAINT `fk_saldo_producto1` FOREIGN KEY (`idproducto`) REFERENCES
`producto` (`idproducto`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;


/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

Estado del Arte

El análisis del estado de arte para la creación de sockets que aquí se realiza es
sobre la investigación referente al tema encontrado en varias fuentes de
información, así como los documentos de aula entregados en los escenarios y
algunos ejemplos prácticos del método de aplicación

 Sockets
Una forma de conseguir que dos programas se transmitan datos, basada en el
protocolo TCP/IP, es la programación de sockets. Un socket no es más que un
"canal de comunicación" entre dos programas que corren sobre ordenadores
distintos o incluso en el mismo ordenador.

Desde el punto de vista de programación, un socket no es más que un "fichero"


que se abre de una manera especial. Una vez abierto se pueden escribir y leer
datos de él con las habituales funciones de read() y write() del lenguaje C.
Hablaremos de todo esto con detalle más adelante.

Existen básicamente dos tipos de "canales de comunicación" o sockets, los


orientados a conexión y los no orientados a conexión.

En el primer caso ambos programas deben conectarse entre ellos con un


socket y hasta que no esté establecida correctamente la conexión, ninguno de
los dos puede transmitir datos. Esta es la parte TCP del protocolo TCP/IP, y
garantiza que todos los datos van a llegar de un programa al otro
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

correctamente. Se utiliza cuando la información a transmitir es importante, no se


puede perder ningún dato y no importa que los programas se queden
"bloqueados" esperando o transmitiendo datos. Si uno de los programas está
atareado en otra cosa y no atiende la comunicación, el otro quedará bloqueado
hasta que el primero lea o escriba los datos.

En el segundo caso, no es necesario que los programas se conecten.


Cualquiera de ellos puede transmitir datos en cualquier momento,
independientemente de que el otro programa esté "escuchando" o no. Es el
llamado protocolo UDP, y garantiza que los datos que lleguen son correctos,
pero no garantiza que lleguen todos.

Se utiliza cuando es muy importante que el programa no se quede bloqueado y


no importa que se pierdan datos. Imaginemos, por ejemplo, un programa que
está controlando la temperatura de un horno y envía dicha temperatura a un
ordenador en una sala de control para que éste presente unos gráficos de
temperatura. Obviamente es más importante el control del horno que el perfecto
refresco de los gráficos. El programa no se puede quedar bloqueado sin
atender al horno simplemente porque el ordenador que muestra los gráficos
esté ocupado en otra cosa.

En el ejemplo y a partir de este momento nos referimos únicamente a sockets


TCP. Los UDP son básicamente iguales, aunque hay pequeñas diferencias en
la forma de abrirlos y de enviar los mensajes. Puedes ver un ejemplo de
programación de socket UDP.

 Arquitectura Cliente / Servidor


A la hora de comunicar dos programas, existen varias posibilidades para
establecer la conexión inicialmente. Una de ellas es la utilizada aquí. Uno de los
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

programas debe estar arrancado y en espera de que otro quiera conectarse a


él. Nunca da "el primer paso" en la conexión. Al programa que actúa de esta
forma se le conoce como servidor. Su nombre se debe a que normalmente es el
que tiene la información que sea disponible y la "sirve" al que se la pida. Por
ejemplo, el servidor de páginas web tiene las páginas web y se las envía al
navegador que se lo solicite.

El otro programa es el que da el primer paso. En el momento de arrancarlo o


cuando lo necesite, intenta conectarse al servidor. Este programa se denomina
cliente. Su nombre se debe a que es el que solicita información al servidor. El
navegador de Internet pide la página web al servidor de Internet.

En este ejemplo, el servidor de páginas web se llama servidor porque está (o


debería de estar) siempre encendido y pendiente de que alguien se conecte a él
y le pida una página. El navegador de Internet es el cliente, puesto que se
arranca cuando nosotros lo arrancamos y solicita conexión con el servidor.

Resumiendo, servidor es el programa que permanece pasivo a la espera de que


alguien solicite conexión con él, normalmente, para pedirle algún dato. Cliente
es el programa que solicita la conexión para, normalmente, pedir datos al
servidor.

 La Conexión
Para poder realizar la conexión entre ambos programas son necesarias varias
cosas:

 Dirección IP del servidor.


 Cada ordenador de una red tiene asignado un número único, que sirve para
identificarle y distinguirle de los demás, de forma que cuando un ordenador
quiere hablar con otro, manda la información a dicho número. Es similar a
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

nuestros números de teléfono. Si quiero hablar con un amigo primero marco


su número de teléfono y luego hablo con él.
El servidor no necesita la dirección de ninguno de los dos ordenadores, al
igual que nosotros, para recibir una llamada por teléfono, no necesitamos
saber el número de nadie, ni siquiera el nuestro. El cliente sí necesita saber
el número del servidor, al igual que nosotros para llamar a alguien
necesitamos saber su número telefónico.
 La dirección IP es un número del estilo 192.100.23.4.  ¡Todos lo hemos visto
en Internet! En resumidas cuentas, el cliente debe conocer a qué ordenador
desea conectarse. En nuestro navegador de Internet facilitamos la dirección
IP del servidor al que queremos conectarnos obviamente este nombre hay
que traducirlo a una dirección IP, pero nuestro navegador e Internet se
encargan de eso por nosotros.
 Servicio que queremos crear / utilizar.
Cada servicio dentro del ordenador debe tener un número único que lo
identifique (como la extensión de teléfono). Estos números son enteros
normales y van de 1 a 65535. Los números bajos, desde 1 a 1023 están
reservados para servicios habituales de los sistemas operativos (www, ftp,
mail, ping, etc). El resto están a disposición del programador.

Tanto el servidor como el cliente deben conocer el número del servicio al que
atienden o se conectan. El servidor le indica al sistema operativo qué servicio
quiere atender, al igual que en una empresa el empleado recién contratado
(o alguien en su lugar) debe informar a la telefonista en qué extensión se
encuentra.
El cliente, cuando llame a la empresa, debe dar el número de extensión (o
nombre de empleado), de forma que la telefonista le ponga con la persona
adecuada. En el caso del navegador de Internet, estamos indicando el
servicio con la www, servicio de páginas web. También es posible, por
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

ejemplo "ftp.chuidiang.com", si chuidiang.com admite clientes ftp. Nuestro


ordenador es lo suficientemente listo como para saber a qué número
corresponden esos servicios habituales.

 El Servidor
Con C en Unix/Linux, los pasos que debe seguir un programa servidor son los
siguientes:

Apertura de un socket, mediante la función socket(). Esta función devuelve un


descriptor de fichero normal, como puede devolverlo open(). La función socket()
no hace absolutamente nada, salvo devolvernos y preparar un descriptor de
fichero que el sistema posteriormente asociará a una conexión en red.

Avisar al sistema operativo de que hemos abierto un socket y queremos que


asocie nuestro programa a dicho socket. Se consigue mediante la función
bind(). El sistema todavía no atenderá a las conexiones de clientes,
simplemente anota que cuando empiece a hacerlo, tendrá que avisarnos a
nosotros. Es en esta llamada cuando se debe indicar el número de servicio al
que se quiere atender.

Avisar al sistema de que comience a atender dicha conexión de red. Se


consigue mediante la función listen(). A partir de este momento el sistema
operativo anotará la conexión de cualquier cliente para pasárnosla cuando se lo
pidamos. Si llegan clientes más rápido de lo que somos capaces de atenderlos,
el sistema operativo hace una "cola" con ellos y nos los irá pasando según
vayamos pidiéndolo.

Pedir y aceptar las conexiones de clientes al sistema operativo. Para ello


hacemos una llamada a la función accept(). Esta función le indica al sistema
operativo que nos dé al siguiente cliente de la cola. Si no hay clientes se
quedará bloqueada hasta que algún cliente se conecte.
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

Escribir y recibir datos del cliente, por medio de las funciones write() y read(),
que son exactamente las mismas que usamos para escribir o leer de un fichero.
Obviamente, tanto cliente como servidor deben saber qué datos esperan recibir,
qué datos deben enviar y en qué formato. Puedes ver cómo se pueden poner
de acuerdo en estos mensajes en el apartado de mensajes.

Cierre de la comunicación y del socket, por medio de la función close(), que es


la misma que sirve para cerrar un fichero.

 El Cliente
Los pasos que debe seguir un programa cliente son los siguientes:

 Apertura de un socket, como el servidor, por medio de la función


socket()
 Solicitar conexión con el servidor por medio de la función connect().
Dicha función quedará bloqueada hasta que el servidor acepte nuestra
conexión o bien si no hay servidor en el sitio indicado, saldrá dando un
error. En esta llamada se debe facilitar la dirección IP del servidor y el
número de servicio que se desea.
 Escribir y recibir datos del servidor por medio de las funciones write() y
read().
 Cerrar la comunicación por medio de close().
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

 Diagrama de Flujo

SERVIDOR
SOCKET

AVISA SI HAY MAS DE


UN SOCKET CLIENTE

SOCKET
APERTURA PARA
ATENDER SOCKETS

CONEXION AL
SERVIDOR

ACEPTAR CONEXION
IMPRESION PARA
INGRESAR DATOS

ESPERA
ESCRIBE
RESPUESTAS

IMPRESION ESTADO
DE LA CONEXION
LEE RESPUESTAS

RECIBE RESULTADOS ENVIA RESULTADOS

ENVIA RESULTADOS RECIBE RESULTADOS

IMPRIME IMPRIME
RESULTADOS RESULTADOS

CIERRA LA CIERRA LA
COMUNICACION COMUNICACION
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

 Ejemplo

En el ejemplo siguiente se crea un socket que se puede usar para comunicarse


en una red basada en TCP/IP, como Internet.

C#
Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);

Para usar UDP en lugar de TCP, cambie el tipo de protocolo, como en el ejemplo
siguiente:

C#
Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);

La enumeración AddressFamily especifica las familias de direcciones estándar


usadas por la clase Socket para resolver direcciones de red (por ejemplo, el
miembro AddressFamily.InterNetwork especifica la familia de direcciones IP de
versión 4).

La enumeración SocketType especifica el tipo de socket (por ejemplo, el miembro


SocketType.Stream indica un socket estándar para enviar y recibir datos con
control de flujo).

La enumeración ProtocolType especifica el protocolo de red que se va a usar al


comunicarse en el Socket (por ejemplo, ProtocolType.Tcp indica que el socket
usa TCP y ProtocolType.Udp indica que el socket usa UDP).

Una vez que se ha creado un socket, puede iniciar una conexión con un punto de
conexión remoto o recibir conexiones procedentes de dispositivos remotos.

En el ejemplo siguiente se crea un socket implementado en java

import java.net.*;

import java.io.*;

/**
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

* @author Jorge V

*/

public class Conex {

final int PUERTO=5000;

ServerSocket sc;

Socket so;

DataOutputStream salida;

String mensajeRecibido;

//SERVIDOR

public void initServer()

BufferedReader entrada;

try

sc = new ServerSocket(PUERTO );/* crea socket servidor que escuchara en


puerto 5000*/

so=new Socket();

System.out.println("Esperando una conexión:");

so = sc.accept();

Utilización de Sockets
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

Aplicativo mediante el cual se procederá a realizar un prototipo transaccional para


simulación de transacciones tales como, consulta, consignación y retiro, en la cual
será implementada la base de datos en MySQL conectado a través de java para
su funcionamiento, donde en MySQL tenemos relacionada la base de la
información para ser consultada por medio de una interfaz de usuario desarrollada
en java para su consulta.
El código anexado establecido para realizar la conexión con MySQL mostrando la
interfaz donde el usuario ingrese los datos y este sea almacenado en la base de
datos.

 Clase Conectar

package clases;

import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;

/**
*
* @author Andrés Duque
*/
public class conectar {
   
   private static Connection conn;
   private static final String driver = "com.mysql.jdbc.Driver";
//conector .jar
   private static final String user = "adminpoli@bancopoli"; //usuario
   private static final String password = "Datos2018"; // contraseña
   private static final String url=
"jdbc:mysql://bancopoli.mysql.database.azure.com:3306/bancoxyz"; // lugar
de la base de datos, se uso Azure para realizar la conexión remotamente

   //Se crea metodo que realizara la conexión llamando las variables


usadas para la ralizar la conexión en azure
   public conectar() {
       conn = null;
       try {
           Class.forName(driver);
           conn= DriverManager.getConnection(url, user,password); //
realiza uso de las variables
           if(conn !=null){
               JOptionPane.showMessageDialog(null, "Conectado a...\n"+
url); // envia mensaje al estar conectado
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

               }
       } catch (Exception e) {
           
           JOptionPane.showMessageDialog(null, "Error al conectar"+
e); // muestra el mensaje de error y su excepción
           
       }
   }
   // Retorna la conexión
   public  Connection getConnection(){
       return conn;
   }
   
   //Metodo desconecta con la base de datos
   public void desconectar (){
       conn = null;
       if (conn== null){
           
           JOptionPane.showMessageDialog(null, "Desconectado...\n"+
url); // Muestra mensaje de desconexión y su url
       }
       }
}

 Scripts

-- Agregar un pais

INSERT pais (nombre_pais) values ('Colombia');

-- Agregar una ciudad

INSERT ciudad (nombre_ciudad, idpais) values ('Bogota', 1);

-- Agregar un producto

INSERT producto (tipo_producto) values ('Cuenta de ahorros');

-- Agregar un saldo

INSERT saldo (saldo, idproducto) values (0,1);

-- Agregar un cliente
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

INSERT into cliente (identificacion,nombre_cliente,apellido_cliente,


direccion_cliente,telefono_cliente, idciudad,saldo_idsaldo) values
(79995552,'Nombre','Apellido','Calle 1 23-23', '30211112', 4, 1);

-- Agregar un movimiento

INSERT movimiento (fecha_movimiento, valor_movimiento, idsaldo) values


(now(),100,6);

-- Agregar un movimiento

INSERT movimiento (fecha_movimiento, valor_movimiento, idsaldo) values


(now(),-100,6);

-- Actualizar el saldo con el utimo moviemiento;

UPDATE saldo as a
INNER JOIN movimiento as b on a.idsaldo=b.idsaldo
set a.saldo = a.saldo+b.valor_movimiento
where b.idmovimiento = (select max(idmovimiento) from movimiento where
idsaldo=a.idsaldo);
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Persistencia y Datos Transaccionales

Referencias

chuidiang.org. (s.f.). chuidiang.org. Obtenido de


http://www.chuidiang.org/clinux/sockets/udp/udp.php

docs.microsoft.com. (30 de Marzo de 2017). docs.microsoft.com. Obtenido de


https://docs.microsoft.com/es-es/dotnet/framework/network-programming/how-to-
create-a-socket

V, J. (7 de Abril de 2011). http://codigoprogramacion.com. Obtenido de


http://codigoprogramacion.com/cursos/java/103-sockets-en-java-con-cliente-y-
servidor.html#.WxWvUiAh3IU

Vous aimerez peut-être aussi