Professional Documents
Culture Documents
NET CON
EN LA NUBE
Vemos que se abre una ventana con la conexión al servidor remoto que
contratamos y es a donde vamos a conectar nuestra aplicación.
En este servidor ya está instalada una instancia de base de datos a la cual nos
conectaremos.
IP pública (que nos indica a que servidor nos vamos a conectar), el puerto de
conexión (Es el que identifica a que instancia del servidor nos conectamos), el
usuario y clave de la instancia (Son las credenciales de acceso que
configuramos al instalar la instancia de base de datos).
USE master
GO
USE master
GO
CREATE DATABASE [VUELOS] ON (NAME = N'VUELOS_Data', FILENAME =
N'C:\BDD2008\_DOTNET\MSSQL10_50.DOTNET\MSSQL\DATA\VUELOS_Data.MDF' , SIZE
= 3, FILEGROWTH = 10%) LOG ON (NAME = N'VUELOS_Log', FILENAME =
N'C:\BDD2008\_DOTNET\MSSQL10_50.DOTNET\MSSQL\DATA\VUELOS_Log.LDF' , SIZE =
1, FILEGROWTH = 10%)
COLLATE Traditional_Spanish_CI_AS
GO
1.3 Sobre la base de datos VUELOS damos click derecho y ponemos
New Query donde crearemos las tablas necesarias para el proyecto
como a continuación se describe:
GO
--CREACION DE CONTRAINT EN LA TABLA VU_AEROPUERTOS QUE INDICA QUE EL
CODIGO SEA UNICO
ALTER TABLE VU_AEROPUERTOS ADD CONSTRAINT UK_CODIGO
UNIQUE(AE_CODIGO)
GO
---------------------DATOS DE EJEMPLO--------------------
GO
--CREADION DE LOS FOREIGN KEY DE LA TABLA VUELOS CON LA TABLA
AEROPUERTOS
1.6 Creamos una vista que nos permita mostrar al usuario la lista de
vuelos con sus correspondientes nombres ejecutando lo siguiente:
USE VUELOS
GO
SELECT
ID_VUELO,
CIUDAD_O = (SELECT AE_AEROPUERTO FROM VU_AEROPUERTOS WHERE
AE_CODIGO = CIUDAD_ORIGEN ),
CIUDAD_D = (SELECT AE_AEROPUERTO FROM VU_AEROPUERTOS WHERE
AE_CODIGO = CIUDAD_DESTINO ),
CAPACIDAD,
VALOR,
FECHA_SALIDA,
CIUDAD_ORIGEN,
CIUDAD_DESTINO
FROM VU_VUELOS
GO
1.8 Podemos comprobar la correcta creación de los objetos en la base
de datos, con esto queda listo el ambiente para trabajar
CREACION DE LA APLICACIÓN
2.6 Para que se pueda interactuar entre los proyectos que acabamos de
crear debemos crear referencias entre ellos, es decir, permitir que
sean visibles unos proyectos a otros, de la siguiente manera:
En Lógica de Negocios debemos hacer referencia a Entidades y Acceso a
datos
En Entidades debemos agregar la referencia a AccesoDatos
2.7 A continuación colocaremos las Clases y su respectivo código en
cada uno de los proyectos:
using System.Data;
using System.Data.SqlClient;
namespace AccesoDatos
{
public class Conexion
{
public SqlConnection Conectar()
{
// Data Source=208.66.193.64,49162 --> Es la instancia de base de datos que se va a utilizar
dada por la IP Pública y su puerto
// User ID=sa; Es el usuario con el que voy a conectarme a la base de datos
//Password=zaqxswcde --> Es la clave correspondiente a la base de datos
//VUELOS --> Es la base de datos a la que se va a conectar la aplicación
namespace Entidades
{
//Clase que define la entidad Aeropuerto
public class Aeropuerto
{
private int IdAeropuerto = 0;
namespace Entidades
{
//Clase que define la entidad Cliente
public class Cliente
{
private string Nombres = string.Empty;
namespace Entidades
{
//Clase que define la entidad Vuelo
public class Vuelo
{
private int IdVuelo = 0;
using AccesoDatos;
using Entidades;
using System.Data;
using System.Data.SqlClient;
namespace LogicaNegocios
{
public class AdministrarVuelos
{
public Aeropuerto[] aeropuertosNombres;
Conexion objConectarse;
//Método que permite buscar los vuelos según su origen, destino y fecha
public Vuelo[] BuscarVuelos(string cOrigen, string cDestino, string fecha)
{
Vuelo[] vuelos;
//SI no hay ciudad de origen o destino los inicializa con '%' para que busque todos en la
base de datos
if ((cOrigen == null) || (cOrigen == string.Empty))
{
cOrigen = "%";
}
if ((cDestino == null) || (cDestino == string.Empty))
{
cDestino = "%";
}
cnn = objConectarse.Conectar();
cnn.Open();
try
{
//Conexión a la base y consulta de información
SqlCommand cmd = new SqlCommand("Select * from WV_LISTA_VUELOS Where
CIUDAD_ORIGEN LIKE @cOrigen AND CIUDAD_DESTINO LIKE @cDestino ORDER BY VALOR
DESC", cnn);
cmd.Parameters.AddWithValue("@cOrigen", cOrigen);
cmd.Parameters.AddWithValue("@cDestino", cDestino);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
tabla = null;
tabla = new DataTable();
sda.Fill(tabla);
cnn.Close();
}
catch (SqlException ex)
{
return null;
}
return vuelos;
}
cnn = objConectarse.Conectar();
cnn.Open();
try
{
SqlCommand cmd = new SqlCommand("Select * from VU_AEROPUERTOS", cnn);
Console.Write(cmd);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
tabla = null;
tabla = new DataTable();
sda.Fill(tabla);
cnn.Close();
if (tabla.Rows.Count <= 0)
{
return null;
}
else
{
int i = 0;
aeropuertos = new Aeropuerto[tabla.Rows.Count];
while (i < tabla.Rows.Count)
{
aeropuertos[i] = new Aeropuerto();
aeropuertos[i].idAeropuerto = Convert.ToInt16(tabla.Rows[i]["AE_ID"]);
aeropuertos[i].codigo = tabla.Rows[i]["AE_CODIGO"].ToString();
aeropuertos[i].aeropuertoNombre = tabla.Rows[i]["AE_AEROPUERTO"].ToString();
aeropuertos[i].ciudad = tabla.Rows[i]["AE_CIUDAD"].ToString();
i += 1;
}
}
}
catch (SqlException ex)
{
return null;
}
return aeropuertos;
}
public int ComprarVuelo(int idVuelo, string nombres, string apellidos, Decimal valor) {
int result = 0;
if (nombre == string.Empty)
nombre = "No definido";
return nombre;
}
}
}
namespace ServidorVuelos
{
/// <summary>
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Para permitir que se llame a este servicio Web desde un script, usando ASP.NET AJAX, quite la
marca de comentario de la línea siguiente.
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
//Los WebMethod son aquellos servicios que están disponibles para ser consumidos
2.9 Para la creación del cliente generaremos una nueva aplicación para
lo que empezaremos la creación de una solución en blanco con el
Framework 3.5, damos click derecho en la solución y agregar un
nuevo proyecto de Aplicación de Windows Forms.
2.10 Vamos a trabajar con el cliente que consume el servicio web que
implementamos, para esto primero damos click derecho en
Cliente_Vuelos_Burbano y ponemos Agregar/Windows Forms con el
nombre Venta_Vuelos.cs
2.10.1 Para poder trabajar con el ServicioWeb que implementamos debemos
crear una referencia web del cliente hacia el servidor, damos click
derecho sobre el cliente y ponemos Agregar Referencia de Servicio,
ponemos el nombre Operaciones, debemos ejecutar primero el servidor la
cual nos muestra la dirección y el puerto donde se ejecuta
2.10.2 Creamos el diseño en el form de Venta_Vuelos.cs como se muestra a
continuación:
public Venta_Vuelos()
{
InitializeComponent();
iniciarAeropuertos();
}
aeropuertos = servicio.listarAeropuertos();
if (cod == string.Empty)
cod = "NA";
return cod;
}
origen = cbx_origen.SelectedItem.ToString();
destino = cbx_destino.SelectedItem.ToString();
vuelos = servicio.buscarVuelos(codAeropuertoXNom(origen), codAeropuertoXNom(destino),
"");
if (vuelos == null)
{
MessageBox.Show("No existen Vuelos para esta información");
}
else {
DataSet ds = new DataSet();
dataGridView1.DataSource = vuelos;
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
}
if (ar < 0)
{
MessageBox.Show("Seleccione un vuelo");
return;
}
cantidadBoletos = esNumeroPositivo(txtCantBol.Text);
if(cantidadBoletos==-1)
{
MessageBox.Show("Cantidad de Boletos no es correcto");
return;
}
codVuelo = Convert.ToInt16(dataGridView1.Rows[ar].Cells[0].Value);
valorUnitario = Convert.ToDecimal(dataGridView1.Rows[ar].Cells[3].Value);
nombresCliente = txtNombresCl.Text;
apellidosCliente = txtApellidosCl.Text;
valorTotal = valorUnitario*cantidadBoletos;
if (respCompra == 1)
{
MessageBox.Show("Transacción realizada correctamente");
}
else
{
MessageBox.Show("Error, Transacción no se realizó");
}
}
return resp;
}
}
}