Guia 8

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

UNIVERSIDAD DON BOSCO

FACULTAD DE ESTUDIOS TECNOLÓGICOS


COORDINACION DE COMPUTACIÓN
GUIA DE LABORATORIO # 8
Nombre de la Práctica: Conectando a Fuentes de Datos – Parte I
CICLO: 02 Lugar de Ejecución: Centro de cómputo
Tiempo Estimado: 2 horas con 30 minutos
MATERIA: Desarrollo de Aplicaciones con Software Propietario.

II. INTRODUCCIÓN TEÓRICA

Terminología de Bases de Datos:


 Una Base de Datos es un fichero electrónico (o conjunto de ficheros) que permite almacenar
información de manera estructurada.
 Una Base de Datos Relacional es un modelo de base de datos que almacena la información en Tablas.
 Cada Tabla, almacena un conjunto específico de datos estructurados. Una tabla contiene una colección
de filas (tuplas o registros) y columnas (campos o atributos).
 Cada Columna de la tabla posee un nombre, y un Tipo de Dato, que define la información que podrá
almacenar. Por ejemplo: fechas, nombres, importes en moneda o números.
 Las Tablas poseen además, restricciones como ser la “Clave Primaria”, que asegura la unicidad de los
datos en la tabla; además de relaciones o claves foráneas con otras tablas, implementando integridad
referencial.

ADO.NET
Es un conjunto de componentes del software que pueden ser usados por los programadores para acceder a
datos y a servicios de datos. Forman parte de la biblioteca de clases base que están incluidas en el Microsoft
.NET Framework. Es comúnmente usado por los programadores para acceder y para modificar los datos
almacenados en un Sistema Gestor de Bases de Datos Relacionales, aunque también puede ser usado para
acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolución de la
tecnología ActiveX Data Objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido
como un producto enteramente nuevo.

ADO.NET consiste en dos partes primarias:


Data provider: estas clases proporcionan el acceso a una fuente de datos, como Microsoft SQL Server y
Oracle. Cada fuente de datos tiene su propio conjunto de objetos del proveedor, pero cada uno tienen un
conjunto común de clases de utilidad:
 Connection: Proporciona una conexión usada para comunicarse con la fuente de datos. También
actúa como Abstract Factory para los objetos command.
 Command: Usado para realizar alguna acción en la fuente de datos, como lectura, actualización, o
borrado de datos relacionales.
 Parameter: Describe un simple parámetro para un command. Un ejemplo común es un parámetro
para ser usado en un procedimiento almacenado.
 DataAdapter: "Puente" utilizado para transferir data entre una fuente de datos y un objeto DataSet
(ver abajo).
 DataReader: Es una clase usada para procesar eficientemente una lista grande de resultados, un
registro a la vez.

Desarrollo de Aplicaciones con Software Propietario.1 / 22


Guía #8: Conectando a Fuentes de Datos – Parte I

III. MATERIALES Y EQUIPO

Para la realización de la guía de práctica se requerirá lo siguiente:

No. Requerimiento Cantidad


1 Guía de práctica #8: Conectando a Fuentes de Datos – Parte I 1
2 Computadora con Microsoft Visual Studio 2015 y Microsoft SQL Server 1
instalados.
3 Memoria USB o disco flexible 1

IV. PROCEDIMIENTO

Ejercicio #1 – Creación de base de datos usando SQL Server 2012 para que funcione como fuente de datos.

1. Proceda a iniciar la herramienta de Microsoft SQL Server Management Studio instalada en su


computadora.
2. Ubique a la base de datos “Bolsa_Trabajo”. Si esta base de datos ya existe, proceda a eliminarla.

3. Entre los recursos proporcionado para esta guía, ubique el script ( guia8.sql ) y de doble clic sobre
este archivo. Luego, presione el botón “! Execute” y espere hasta que en el inferior muestre la
confirmación de consulta ejecutada exitosamente.
De clic secundario sobre la carpeta Databases del Explorer del Gestor SQL y seleccione opción Refresh.
Confirme que se ha creado la base de datos “Bolsa_Trabajo”.

4. Expanda la base datos “Bolsa Trabajo”, de clic derecho sobre subcarpeta Database Diagrams y
seleccione opción New Database Diagram. Confirme en la ventana siguiente y agregue a c/u de las
tablas.
Proceda a verificar mediante este diagrama a las relaciones entre las tablas, las cuales deben verse
como se muestra a continuación:

Desarrollo de Aplicaciones con Software Propietario.2


Guía #8: Conectando a Fuentes de Datos – Parte I

5. Inicia Microsoft Visual Studio y crea un nuevo Sitio Web vacio mvc, denominado
SitioWebdeSUCARNET.

Ejercicio #2 – Creación de conexión desde Visual Studio con el origen de dato.


6. Procederemos a crear una nueva clase con el nombre de “conexion.cs”, y digite el siguiente código.
Tome especial cuidado de que se han incluido los espacios de nombres orientados a datos como
System.Data.SQLClient.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

//--------------Namespace para trabajar con SQLServer--------------


using System.Data.SqlClient;
//------------------------------------------------------------------
using System.Web.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.Mvc;

namespace SitioWebdeSUCARNET.Models
{
public class Conexion
{
private String cadenaConexion { get; set; }
//string strcon =

private SqlConnection conexionSQL;

public Conexion()
{
//Extrae las credenciales del webconfig
cadenaConexion = @"Data source=(local);Initial Catalog=Bolsa_Trabajo;Integrated Security=True";

//Función para realizar conexion a base de datos SQLserver


public bool conectar()
{
try
{
//crea objeto SQLConnection y enviar como paramentros las credenciales de conexion
this.conexionSQL = new SqlConnection(this.cadenaConexion);
//abre la conexion a la base de datos SQLServer
this.conexionSQL.Open();
return true;
}
catch (Exception e)
{
return false;
}
}
//Metodo que verifica si el estado de la conexion es abierta o cerrada en la aplicación.
public bool estadoConexion()
{

switch (this.conexionSQL.State)

Desarrollo de Aplicaciones con Software Propietario.3


Guía #8: Conectando a Fuentes de Datos – Parte I

{
case System.Data.ConnectionState.Broken:
return true;
case System.Data.ConnectionState.Open:
return true;
default:
return false;
}
}

public void desconectar()


{
//Cierra la conexion a la base de datos
this.conexionSQL.Close();
}

//Datos para dropdown Categorias


public List<SelectListItem> getCategorias()
{
conectar();
List<SelectListItem> items = new List<SelectListItem>();
//crea objetos para comandos SQL
SqlCommand comando = new SqlCommand();
//crea objeto para leer datos de consulta SQL
SqlDataReader lector;

//Consulta a la tabla Categorias.


comando.CommandType = System.Data.CommandType.Text;
comando.CommandText = "SELECT * FROM categorias ORDER BY sNombreCategoria";
//Agrega los parametros para conexion al objeto comando.
comando.Connection = this.conexionSQL;
try
{
//Ejecuta la instruccion Select
lector = comando.ExecuteReader();
//verifica si, se encuentran resultados
if (lector.HasRows)
{
//Verfica que se pueden leer registros
while (lector.Read())
{
//agrega datos de datareader al Dropdownlist.
items.Add(new SelectListItem
{
Text = lector["sNombreCategoria"].ToString(),
Value = lector["nIdCategoria"].ToString()
});
}
lector.Close();
}
desconectar();
return items;
}
catch (SqlException error)
{
return null;

}
//Datos para dropdown Localidades
public List<SelectListItem> getLocalidades()

Desarrollo de Aplicaciones con Software Propietario.4


Guía #8: Conectando a Fuentes de Datos – Parte I

{
try
{
conectar();
List<SelectListItem> items = new List<SelectListItem>();
//crea objetos para comandos SQL
SqlCommand comando = new SqlCommand();
//crea objeto para leer datos de consulta SQL
SqlDataReader lector;
//Consulta a la tabla municipios.
comando.CommandType = System.Data.CommandType.Text;
comando.CommandText = "SELECT * FROM municipios ORDER BY sNombreMunicipio";
//Agrega los parametros para conexion al objeto comando.
comando.Connection = this.conexionSQL;
//Ejecuta la instruccion Select
lector = comando.ExecuteReader();
//verifica si, se encuentran resultados
if (lector.HasRows)
{
//Verfica que se pueden leer registros
while (lector.Read())
{
//agrega datos de datareader al Dropdownlist.
items.Add(new SelectListItem
{
Text = lector["sNombreMunicipio"].ToString(),
Value = lector["nIdMunicipio"].ToString()
});
}
lector.Close();
}
desconectar();
return items;

}
catch (SqlException error)
{
return null;
}
}

public List<SelectListItem> getEmpresas()


{
try
{
conectar();
List<SelectListItem> items = new List<SelectListItem>();

//crea objetos para comandos SQL


SqlCommand comando = new SqlCommand();
//crea objeto para leer datos de consulta SQL
SqlDataReader lector;
//Consulta a la tabla empresa.
comando.CommandType = System.Data.CommandType.Text;
comando.CommandText = "SELECT * FROM empresas ORDER BY sNombreEmpresa";
//Agrega los parametros para conexion al objeto comando.
comando.Connection = this.conexionSQL;
//Ejecuta la instruccion Select
lector = comando.ExecuteReader();

//verifica si, se encuentran resultados


if (lector.HasRows)

Desarrollo de Aplicaciones con Software Propietario.5


Guía #8: Conectando a Fuentes de Datos – Parte I

{
//Verfica que se pueden leer registros
while (lector.Read())
{
//agrega datos de datareader al Dropdownlist.
items.Add(new SelectListItem
{
Text = lector["sNombreEmpresa"].ToString(),
Value = lector["nIdEmpresa"].ToString()
});
}
lector.Close();
}
desconectar();
return items;
}
catch (SqlException error)
{
return null;
}
}

public List<Datos> CargarDatos(int categoria = 1, int municipio = 1, int empresa = 1)


{

string SQL;
//crea un DataTable para almacenar todos los registros de la consulta SQL.
DataTable t = new DataTable();
//Realiza consulta a varias tablas de base datos Bolsa de Trabajo.
SQL = "SELECT categorias.sNombreCategoria, ofertas.nIdOferta, ofertas.sTituloOferta, nTipoContrato = CASE
ofertas.nTipoContrato WHEN 1 THEN 'Permanente' WHEN 2 THEN 'Por proyecto' END, nTipoJornada = CASE
ofertas.nTipoJornada WHEN 1 THEN 'Tiempo Completo' WHEN 2 THEN 'Por horas' END, ofertas.fSalario,
ofertas.dFechaPublicacion, empresas.sNombreEmpresa, municipios.sNombreMunicipio FROM municipios INNER JOIN
ofertas ON municipios.nIdMunicipio = ofertas.nIdLocalidad INNER JOIN empresas ON ofertas.nIdEmpresa =
empresas.nIdEmpresa INNER JOIN categorias ON ofertas.nIdCategoria = categorias.nIdCategoria WHERE
categorias.nIdCategoria = @nIdCategoria AND municipios.nIdMunicipio = @nIdMunicipio AND empresas.nIdEmpresa =
@nIdEmpresa";
SqlCommand comando = new SqlCommand(SQL, conexionSQL);
//asigna los valores a los parametros utilizados en la consulta.
comando.Parameters.Clear();
comando.Parameters.AddWithValue("@nIdCategoria", categoria);
comando.Parameters.AddWithValue("@nIdMunicipio", municipio);
comando.Parameters.AddWithValue("@nIdEmpresa", empresa);
//Se almacena los datos de la tabla Ofertas en el DataTable
SqlDataAdapter dataAdaptador = new SqlDataAdapter(comando);
dataAdaptador.Fill(t);
//Se modifican los nombres de la columna del DataTable

List<Datos> items = new List<Datos>();

foreach(DataRow fila in t.Rows)


{
items.Add(new Datos
{
sNombreCategoria = Convert.ToString(fila["sNombreCategoria"]),
nIdOferta = Convert.ToString(fila["nIdOferta"]),
sTituloOferta = Convert.ToString(fila["sTituloOferta"]),
nTipoJornada = Convert.ToString(fila["nTipoJornada"]),
fSalario = Convert.ToString(fila["fSalario"]),
dFechaPublicacion = Convert.ToString(fila["dFechaPublicacion"]),
sNombreEmpresa = Convert.ToString(fila["sNombreEmpresa"]),

Desarrollo de Aplicaciones con Software Propietario.6


Guía #8: Conectando a Fuentes de Datos – Parte I

sNombreMunicipio = Convert.ToString(fila["sNombreMunicipio"])

});
}
return items;
}

//Metodo que muestra datos de una oferta en controles de EditarOferta


public Datos mostraroferta(int idOferta)
{
conectar();
//objetos comando
SqlCommand comando = new SqlCommand();//tabla oferta
SqlDataReader lector;
comando.CommandType = System.Data.CommandType.Text;
comando.CommandText = "select * from ofertas where nIdOferta=" + idOferta;
comando.Connection = this.conexionSQL;
try
{
//extra datos de la tabla Ofertas a controles asp y variables string.
lector = comando.ExecuteReader();
Datos items = new Datos();
if (lector.HasRows)
{
while (lector.Read())
{

items.nIdCategoria = Convert.ToString(lector["nIdCategoria"]);
items.nIdOferta = Convert.ToString(lector["nIdOferta"]);
items.sTituloOferta = Convert.ToString(lector["sTituloOferta"]);
items.nTipoJornada = Convert.ToString(lector["nTipoJornada"]);
items.fSalario = Convert.ToString(lector["fSalario"]);
items.nIdLocalidad = Convert.ToString(lector["nIdLocalidad"]);
items.nTipoContrato = Convert.ToString(lector["nTipoContrato"]);
items.dFechaPublicacion = Convert.ToString(lector["dFechaPublicacion"]);
items.dFechaContratacion = Convert.ToString(lector["FechaContratacion"]);
items.nIdEmpresa = Convert.ToString(lector["nIdEmpresa"]);
items.nTipoLocalidad = Convert.ToString(lector["nTipoLocalidad"]);
items.sDescripcion = Convert.ToString(lector["sDescripcion"]);
items.nVacantes = Convert.ToString(lector["nVacantes"]);

}
lector.Close();
desconectar();
return items;
}
catch (SqlException error)
{
return null;
}
}

//Metodo que inserta nueva oferta a base de datos.


public int nuevaOferta(int nIdEmpresa, String sTituloOferta, int nTipoJornada, int nTipoContrato,
double fSalario, int nIdLocalidad, int nTipoLocalidad, int nIdCategoria, String fechaPublicacion,
String sDescripcion, String fechaContratacion, int nVacantes)
{
//Consulta Insert SQL a tabla ofertas

Desarrollo de Aplicaciones con Software Propietario.7


Guía #8: Conectando a Fuentes de Datos – Parte I

String queryInsert = "INSERT INTO ofertas(nIdEmpresa, sTituloOferta, nTipoJornada,nTipoContrato, fSalario,


nIdLocalidad, nTipoLocalidad, nIdCategoria, dFechaPublicacion, sDescripcion, fechaContratacion, nVacantes)
VALUES(@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12)";
SqlCommand comando = new SqlCommand();
comando.CommandType = System.Data.CommandType.Text;
comando.CommandText = queryInsert;
comando.Connection = this.conexionSQL;

try
{
//asigna los valores a los parametros utilizados en la consulta.
comando.Parameters.AddWithValue("@p1", nIdEmpresa);
comando.Parameters.AddWithValue("@p2", sTituloOferta);
comando.Parameters.AddWithValue("@p3", nTipoJornada);
comando.Parameters.AddWithValue("@p4", nTipoContrato);
comando.Parameters.AddWithValue("@p5", fSalario);
comando.Parameters.AddWithValue("@p6", nIdLocalidad);
comando.Parameters.AddWithValue("@p7", nTipoLocalidad);
comando.Parameters.AddWithValue("@p8", nIdCategoria);
comando.Parameters.AddWithValue("@p9", Convert.ToDateTime(fechaPublicacion));
comando.Parameters.AddWithValue("@p10", sDescripcion);
comando.Parameters.AddWithValue("@p11", Convert.ToDateTime(fechaContratacion));
comando.Parameters.AddWithValue("@p12", nVacantes);

//Realizar el insert a tabla ofertas desde la aplicación.


return comando.ExecuteNonQuery();
}
catch (SqlException error)
{
return 0;
}
}

public int actualizarOferta(int idOferta, int nIdEmpresa, String sTituloOferta, int nTipoJornada, int nTipoContrato,
double fSalario, int nIdLocalidad, int nTipoLocalidad, int nIdCategoria, String sDescripcion,
String fechaContratacion, int nVacantes)
{
//Consulta Update SQL a tabla ofertas
String queryUpdate = "update ofertas set
nIdEmpresa=@p1,sTituloOferta=@p2,nTipoJornada=@p3,nTipoContrato=@p4,fSalario=@p5,nIdLocalidad=@p6,nTipoL
ocalidad=@p7,nIdCategoria=@p8,sDescripcion=@p9,fechaContratacion=@p10,nVacantes=@p11 where nIdOferta=" +
idOferta;
SqlCommand comando = new SqlCommand();
comando.CommandType = System.Data.CommandType.Text;
comando.CommandText = queryUpdate;
comando.Connection = this.conexionSQL;
try
{
//asigna los valores a los parametros utilizados en la consulta.
comando.Parameters.AddWithValue("@p1", nIdEmpresa);
comando.Parameters.AddWithValue("@p2", sTituloOferta);
comando.Parameters.AddWithValue("@p3", nTipoJornada);
comando.Parameters.AddWithValue("@p4", nTipoContrato);
comando.Parameters.AddWithValue("@p5", fSalario);
comando.Parameters.AddWithValue("@p6", nIdLocalidad);
comando.Parameters.AddWithValue("@p7", nTipoLocalidad);
comando.Parameters.AddWithValue("@p8", nIdCategoria);
comando.Parameters.AddWithValue("@p9", sDescripcion);
comando.Parameters.AddWithValue("@p10", Convert.ToDateTime(fechaContratacion));
comando.Parameters.AddWithValue("@p11", nVacantes);
//Realizar el actualización a la tabal oferta desde la aplicación.
return comando.ExecuteNonQuery();

Desarrollo de Aplicaciones con Software Propietario.8


Guía #8: Conectando a Fuentes de Datos – Parte I

}
catch (SqlException error)
{
return 0;
}
}

public int EliminarDatos(int IdOferta)


{
try
{
//Consulta SQL para eliminar registro de tabla Ofertas
String queryDelete = "DELETE FROM ofertas WHERE nIdOferta = @nIdOferta";
SqlCommand comando = new SqlCommand();
comando.Parameters.Clear();
//asigna los valores a los parametros utilizados en la consulta.
comando.Parameters.AddWithValue("@nIdOferta", IdOferta);
comando.CommandType = System.Data.CommandType.Text;
comando.CommandText = queryDelete;
comando.Connection = this.conexionSQL;
//Elimina registro de la tabla oferta desde la aplicación.
return comando.ExecuteNonQuery();
}
catch (SqlException error)
{
return 0;

}
}
}
}

7. Procedar a crear dentro de la carpeta Models las siguientes clases:


Categorias.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace SitioWebdeSUCARNET.Models{
public class categorias{
public List<SelectListItem> Categorias { get; set; }
public int nIdCategoria;
public string sNombreCategoria;}
}

Datos.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace SitioWebdeSUCARNET.Models{
public class Datos {
public List<Datos> DatosOfertas { get; set; }
public String sNombreCategoria { get; set; }
public String nIdOferta { get; set; }
public String sTituloOferta { get; set; }
public String nTipoContrato { get; set; }

Desarrollo de Aplicaciones con Software Propietario.9


Guía #8: Conectando a Fuentes de Datos – Parte I

public String nTipoJornada { get; set; }


public String nTipoLocalidad { get; set; }
public String fSalario { get; set; }
public String dFechaPublicacion { get; set; }
public String dFechaContratacion { get; set; }
public String sNombreEmpresa { get; set; }
public String sNombreMunicipio { get; set; }
public String sDescripcion { get; set; }
public String nVacantes { get; set; }
public string nIdLocalidad { get; set; }
public string nIdCategoria { get; set; }
public string nIdEmpresa { get; set; }
}
}

Empresa.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace SitioWebdeSUCARNET.Models{
public class Empresa
{
public List<SelectListItem> Empresas { get; set; }
public int nIdEmpresa;
public string sNombreEmpresa;
public string sPathImage;
public string sDescripcion;
public string sTelefono;
public string sDireccion;
public string sEmail;
}
}

Localidad.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace SitioWebdeSUCARNET.Models
{
public class Localidad
{
public List<SelectListItem> Localidades { get; set; }

public int nIdMunicipio;


public string sNombreMunicipio;
public int nIdPais; }
}

Desarrollo de Aplicaciones con Software Propietario.10


Guía #8: Conectando a Fuentes de Datos – Parte I

Ejercicio #3 – Index.aspx

1. Ahora, proceda a agregar un nuevo Controlador con nombre “HomeController”. En este controlador
harmeos los métodos necesarios para poder filtrar datos desde la base de datos y mostrarlos a través
de un webgridview. Proceda a digital el siguiente código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data;
using SitioWebdeSUCARNET.Models;

namespace SitioWebdeSUCARNET.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
//Dropdown categorias
categorias ct = new categorias();
Conexion obj = new Conexion();
ct.Categorias = obj.getCategorias();
ViewBag.OpcionesCat = ct.Categorias;
//Dropdown empresa
Empresa emp = new Empresa();
emp.Empresas = obj.getEmpresas();
ViewBag.OpcionesEmp = emp.Empresas;
//Dropdown localidad
Localidad loc = new Localidad();
loc.Localidades = obj.getLocalidades();
ViewBag.OpcionesLoc = loc.Localidades;
//Ofertas
ViewBag.Ofertas = obj.CargarDatos();
return View();
}

[HttpPost]
public ActionResult Index(string OpcionesCat, string OpcionesLoc, string OpcionesEmp)
{
int dcat, dloc, demp;
dcat = Convert.ToInt16(OpcionesCat);
dloc = Convert.ToInt16(OpcionesLoc);
demp = Convert.ToInt16(OpcionesEmp);
//Dropdown categorias
categorias ct = new categorias();
Conexion obj = new Conexion();
ct.Categorias = obj.getCategorias();
ViewBag.OpcionesCat = ct.Categorias;
//Dropdown empresa
Empresa emp = new Empresa();
emp.Empresas = obj.getEmpresas();
ViewBag.OpcionesEmp = emp.Empresas;
//Dropdown localidad
Localidad loc = new Localidad();
loc.Localidades = obj.getLocalidades();
ViewBag.OpcionesLoc = loc.Localidades;
//Ofertas
ViewBag.Ofertas = obj.CargarDatos(dcat, dloc, demp);

return View();
}
}
}

Desarrollo de Aplicaciones con Software Propietario.11


Guía #8: Conectando a Fuentes de Datos – Parte I

2. Procedemos a crear a crear la vista “Index.cshtml”. Digite el siguiente código:


@model SitioWebdeSUCARNET.Models.Datos
@{
ViewBag.Title = "Universidad Don Bosco";
}
@using (Html.BeginForm("Nuevo", "Home", FormMethod.Post))
{<button type="submit" id="btnNuevo" class="btn btn-lg btn-primary top-right "
onclick="location.href('@Url.Action("Nuevo","Home")')">Nueva Oferta</button>
}
<nav class="navbar" role="navigation">
<h1 class="text-center">Bolsa de Trabajo en Línea</h1>
<h5 class="text-center">Universidad Don Bosco - El Salvador</h5>
<hr style="height:10px" />
</nav>

@using (Html.BeginForm("Index", "Home", FormMethod.Post))


{
<div class="form-inline" role="form">

<div class="form-group col-lg-3">


Categoria:
</div>
<div class="form-group col-lg-3">
Localidad:
</div>
<div class="form-group col-lg-6">
Empresa:
</div>
</div>

<div class="form-inline" role="form">

<div class="form-group col-lg-3">


@Html.DropDownList("OpcionesCat", null, new { @class = "form-control" })
</div>
<div class="form-group col-lg-3">
@Html.DropDownList("OpcionesLoc", null, new { @class = "form-control" })
</div>
<div class="form-group col-lg-3">
@Html.DropDownList("OpcionesEmp", null, new { @class = "form-control" })
</div>

<button type="submit" id="btnBuscar" class="btn btn-lg btn-primary "


onclick="location.href('@Url.Action("Index","Home")')">BUSCAR</button>
</div>
}
<br />
<br />
<form id="exportWebGrid" action="Meeting/ExportHeade" method="post">
<div name="webView">
@{
var objweb = new WebGrid(ViewBag.Ofertas, rowsPerPage: 5, canPage: true);
}
@objweb.GetHtml(
tableStyle: "table table-responsive table-hover",
fillEmptyRows: true,
headerStyle: "thead-dark",
footerStyle: "pie-grid",
mode: WebGridPagerModes.All,
firstText: "<< Primera",
previousText: "< Anterior",
nextText: "Siguiente >",
lastText: "Última >>",
columns:
objweb.Columns(
objweb.Column(columnName: "sNombreCategoria", header: "Nombre Categoria"),
objweb.Column(columnName: "nIdOferta", header: "Id Oferta"),

Desarrollo de Aplicaciones con Software Propietario.12


Guía #8: Conectando a Fuentes de Datos – Parte I

objweb.Column(columnName: "sTituloOferta", header: "Titulo Oferta"),


objweb.Column(columnName: "nTipoContrato", header: "Titulo Contrato"),
objweb.Column(columnName: "nTipoJornada", header: "Titulo Jornada"),
objweb.Column(columnName: "fSalario", header: "Salario"),
objweb.Column(columnName: "dFechaPublicacion", header: "Fecha
Publicación"),
objweb.Column(columnName: "sNombreEmpresa", header: "Nombre Empresa"),
objweb.Column(columnName: "sNombreMunicipio", header: "Nombre Municipio"),
objweb.Column(format:
@<text>@Html.ActionLink("Editar", "Editar", "Home", new { nIdOferta = item.nIdOferta }, null)|
@Html.ActionLink("Eliminar", "Eliminar", "Home",
new { nIdOferta = item.nIdOferta }, null)</text>))
</div>
</form>

3. Proceda a cambiar el layout de nuestro proyecto y luego digite el siguiente marcado.


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title</title>
<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
<link href="~/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="~/Scripts/modernizr-2.6.2.js"></script>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">

<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-
collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("Pagina Principal", "Index", "Home", new { area = "" }, new { @class =
"navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
</ul>
</div>
</div>

<div class="body-content">
@RenderBody()

</div>
<hr />
<footer class="modal-footer navbar-inverse navbar-fixed-bottom">
@Html.ActionLink( @DateTime.Now.Year + "- DESARROLLO DE SOFTWARE PROPIETARIO", "Index", "Home",
new { area = "" }, new { @class = "navbar-brand" })
</footer>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>
</body>
</html>

Desarrollo de Aplicaciones con Software Propietario.13


Guía #8: Conectando a Fuentes de Datos – Parte I

4. Proceda a ejecutar su aplicación web y deberá verse de la siguiente manera:

Ejercicio #4 – Nuevo

1. Dentro de nuestro clase “HomeController”, procedemos agregar los siguientes métodos:


[HttpPost]
public ActionResult Nuevo()
{
List<SelectListItem> tcontrato = new List<SelectListItem>();
tcontrato.Add(new SelectListItem { Text = "Permanente", Value = "1" });
tcontrato.Add(new SelectListItem { Text = "Por Proyecto", Value = "2" });
ViewBag.TipoC = tcontrato;

List<SelectListItem> tjornada = new List<SelectListItem>();


tjornada.Add(new SelectListItem { Text = "Tiempo Completo", Value = "1" });
tjornada.Add(new SelectListItem { Text = "Por Horas", Value = "2" });
ViewBag.TipoJ = tjornada;

List<SelectListItem> tlocalidad = new List<SelectListItem>();


tlocalidad.Add(new SelectListItem { Text = "Area", Value = "1" });
tlocalidad.Add(new SelectListItem { Text = "Proximidad", Value = "2" });
ViewBag.TipoL = tlocalidad;
//Dropdown categorias
categorias ct = new categorias();
Conexion obj = new Conexion();
ct.Categorias = obj.getCategorias();
ViewBag.OpcionesCat = ct.Categorias;
//Dropdown empresa
Empresa emp = new Empresa();
emp.Empresas = obj.getEmpresas();
ViewBag.OpcionesEmp = emp.Empresas;
//Dropdown localidad
Localidad loc = new Localidad();
loc.Localidades = obj.getLocalidades();
ViewBag.OpcionesLoc = loc.Localidades;
return View();

[HttpPost]
public ActionResult Ingresardatos(string OpcionesCat, string OpcionesLoc, string OpcionesEmp,
string sTituloOferta, string TipoJ, string TipoC, string fSalario, string TipoL,
string dFechaPublicacion, string dFechaContratacion, string sDescripcion, string nVacantes

Desarrollo de Aplicaciones con Software Propietario.14


Guía #8: Conectando a Fuentes de Datos – Parte I

)
{
Conexion obj = new Conexion();
obj.conectar();
obj.nuevaOferta(int.Parse(OpcionesEmp), sTituloOferta, int.Parse(TipoC), int.Parse(TipoJ),
double.Parse(fSalario), int.Parse(OpcionesLoc), int.Parse(TipoL), int.Parse(OpcionesCat),
dFechaPublicacion, sDescripcion, dFechaContratacion, int.Parse(nVacantes));
obj.desconectar();

int dcat, dloc, demp;


dcat = Convert.ToInt16(OpcionesCat);
dloc = Convert.ToInt16(OpcionesLoc);
demp = Convert.ToInt16(OpcionesEmp);
//Dropdown categorias
categorias ct = new categorias();

ct.Categorias = obj.getCategorias();
ViewBag.OpcionesCat = ct.Categorias;
//Dropdown empresa
Empresa emp = new Empresa();
emp.Empresas = obj.getEmpresas();
ViewBag.OpcionesEmp = emp.Empresas;
//Dropdown localidad
Localidad loc = new Localidad();
loc.Localidades = obj.getLocalidades();
ViewBag.OpcionesLoc = loc.Localidades;
//Ofertas
Datos data = new Datos();
data.DatosOfertas = obj.CargarDatos(dcat, dloc, demp);
ViewBag.Ofertas = data.DatosOfertas;
return View("Index");

}
2. Ahora debera crear una nueva vista de nombre “Nuevo.cshtml”, y proceda a digitar el siguiente
código dentro de ella:
@model SitioWebdeSUCARNET.Models.Datos

@{
ViewBag.Title = "Bolsa de Trabajo en Línea";
}

<h2>Nueva oferta de trabajo</h2>


@using (Html.BeginForm("Ingresardatos", "Home", FormMethod.Post))
{

@Html.AntiForgeryToken()

<div class="form-horizontal">
<h4>Ingrese la informacion en los campos siguientes para adicionar una nueva oferta de trabajo</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.Label("Categoria", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("OpcionesCat", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.sNombreCategoria, "", new { @class = "text-danger"
})
</div>
</div>

<div class="form-group">
@Html.Label("Titulo de la Oferta", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.sTituloOferta, new { htmlAttributes = new { @class = "form-
control" } })
@Html.ValidationMessageFor(model => model.sTituloOferta, "", new { @class = "text-danger" })
</div>

Desarrollo de Aplicaciones con Software Propietario.15


Guía #8: Conectando a Fuentes de Datos – Parte I

</div>

<div class="form-group">
@Html.Label("Tipo Contrato", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoC", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.nTipoContrato, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Tipo Jornada", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoJ", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.nTipoJornada, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Tipo Localidad", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoL", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.nTipoLocalidad, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Salario", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.fSalario, new { htmlAttributes = new { @class = "form-control"
} })
@Html.ValidationMessageFor(model => model.fSalario, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Fecha de Publicación", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.dFechaPublicacion, new { htmlAttributes = new { @class =
"form-control", RegularExpressionAttribute= @"^([0-2][0-9]|3[0-1])(\/|-)(0[1-9]|1[0-2])\2(\d{4})$" } })
@Html.ValidationMessageFor(model => model.dFechaPublicacion, "", new { @class = "text-danger"
})
</div>
</div>

<div class="form-group">
@Html.Label("Empresa", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("OpcionesEmp", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.sNombreEmpresa, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Fecha de Contratación", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.dFechaContratacion, new { htmlAttributes = new { @class =
"form-control", RegularExpressionAttribute = @"^([0-2][0-9]|3[0-1])(\/|-)(0[1-9]|1[0-2])\2(\d{4})$" } })
@Html.ValidationMessageFor(model => model.dFechaContratacion, "", new { @class = "text-
danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Numero de Vacantes", new { @class = "control-label col-md-2" })
<div class="col-md-10">

Desarrollo de Aplicaciones con Software Propietario.16


Guía #8: Conectando a Fuentes de Datos – Parte I

@Html.EditorFor(model => model.nVacantes, new { htmlAttributes = new { @class = "form-


control" } })
@Html.ValidationMessageFor(model => model.nVacantes, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Localidades", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("OpcionesLoc", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.nTipoLocalidad, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Descripción", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.sDescripcion, new { htmlAttributes = new { @class = "form-
control", @cols = 80, @rows = 50 } })
@Html.ValidationMessageFor(model => model.sDescripcion, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
<div class="col-md-offset-2 col-md-10">

<button type="submit" id="btnBuscar" class="btn btn-lg btn-primary "


onclick="location.href('@Url.Action("Ingresar","Home")')">Ingresar</button>

</div>
</div>
</div>
}

<div>
@Html.ActionLink("Ver Lista de Ofertas", "Index")
</div>

Ejercicio #5 – Editar

1. Dentro de nuestro clase “HomeController”, procedemos agregar los siguientes métodos:


[ActionName("Editar")]
public ActionResult Editar(string nIdOferta)
{
List<SelectListItem> tcontrato = new List<SelectListItem>();
tcontrato.Add(new SelectListItem { Text = "Permanente", Value = "1" });
tcontrato.Add(new SelectListItem { Text = "Por Proyecto", Value = "2" });
ViewBag.TipoC = tcontrato;

List<SelectListItem> tjornada = new List<SelectListItem>();


tjornada.Add(new SelectListItem { Text = "Tiempo Completo", Value = "1" });
tjornada.Add(new SelectListItem { Text = "Por Horas", Value = "2" });
ViewBag.TipoJ = tjornada;

List<SelectListItem> tlocalidad = new List<SelectListItem>();


tlocalidad.Add(new SelectListItem { Text = "Area", Value = "1" });
tlocalidad.Add(new SelectListItem { Text = "Proximidad", Value = "2" });
ViewBag.TipoL = tlocalidad;

//Dropdown categorias
categorias ct = new categorias();
Conexion obj = new Conexion();
ct.Categorias = obj.getCategorias();
ViewBag.OpcionesCat = ct.Categorias;

Desarrollo de Aplicaciones con Software Propietario.17


Guía #8: Conectando a Fuentes de Datos – Parte I

//Dropdown empresa
Empresa emp = new Empresa();
emp.Empresas = obj.getEmpresas();
ViewBag.OpcionesEmp = emp.Empresas;
//Dropdown localidad
Localidad loc = new Localidad();
loc.Localidades = obj.getLocalidades();
ViewBag.OpcionesLoc = loc.Localidades;

return View(obj.mostraroferta(int.Parse(nIdOferta)));
}

[ActionName("Actualizar")]
public ActionResult Update(string nIdOferta, string OpcionesCat, string OpcionesLoc, string
OpcionesEmp,
string sTituloOferta, string TipoJ, string TipoC, string fSalario, string TipoL,
string dFechaPublicacion, string dFechaContratacion, string sDescripcion, string nVacantes
)
{
Conexion obj = new Conexion();
obj.conectar();
obj.actualizarOferta(int.Parse(nIdOferta), int.Parse(OpcionesEmp), sTituloOferta,
int.Parse(TipoJ), int.Parse(TipoC), double.Parse(fSalario), int.Parse(OpcionesLoc), int.Parse(TipoL),
int.Parse(OpcionesCat), sDescripcion, dFechaContratacion, int.Parse(nVacantes));
obj.desconectar();

int dcat, dloc, demp;


dcat = Convert.ToInt16(OpcionesCat);
dloc = Convert.ToInt16(OpcionesLoc);
demp = Convert.ToInt16(OpcionesEmp);
//Dropdown categorias
categorias ct = new categorias();

ct.Categorias = obj.getCategorias();
ViewBag.OpcionesCat = ct.Categorias;
//Dropdown empresa
Empresa emp = new Empresa();
emp.Empresas = obj.getEmpresas();
ViewBag.OpcionesEmp = emp.Empresas;
//Dropdown localidad
Localidad loc = new Localidad();
loc.Localidades = obj.getLocalidades();
ViewBag.OpcionesLoc = loc.Localidades;
//Ofertas
Datos data = new Datos();
data.DatosOfertas = obj.CargarDatos(dcat, dloc, demp);
ViewBag.Ofertas = data.DatosOfertas;
return View("Index");
}
2. Ahora debera crear una nueva vista de nombre “Editar.cshtml”, y proceda a digitar el siguiente
código dentro de ella:
@model SitioWebdeSUCARNET.Models.Datos

@{
ViewBag.Title = "Editar";
}

<h2>Editar</h2>

@using (Html.BeginForm("Actualizar", "Home", FormMethod.Post))


{
@Html.AntiForgeryToken()

<div class="form-horizontal">
<h4>Datos</h4>
<hr />

Desarrollo de Aplicaciones con Software Propietario.18


Guía #8: Conectando a Fuentes de Datos – Parte I

@Html.ValidationSummary(true, "", new { @class = "text-danger" })

<div class="form-group">
@Html.Label("ID Oferta", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.nIdOferta, new { htmlAttributes = new { @class = "form-
control", @disabled="disabled" } })
@Html.ValidationMessageFor(model => model.nIdOferta, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Categoria", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("OpcionesCat", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.sNombreCategoria, "", new { @class = "text-danger"
})
</div>
</div>

<div class="form-group">
@Html.Label("Titulo de la Oferta", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.sTituloOferta, new { htmlAttributes = new { @class = "form-
control" } })
@Html.ValidationMessageFor(model => model.sTituloOferta, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Tipo Contrato", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoC", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.nTipoContrato, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Tipo Jornada", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoJ", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.nTipoJornada, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Tipo Localidad", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TipoL", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.nTipoLocalidad, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Salario", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.fSalario, new { htmlAttributes = new { @class = "form-control"
} })
@Html.ValidationMessageFor(model => model.fSalario, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Fecha de Publicación", new { @class = "control-label col-md-2" })

Desarrollo de Aplicaciones con Software Propietario.19


Guía #8: Conectando a Fuentes de Datos – Parte I

<div class="col-md-10">
@Html.EditorFor(model => model.dFechaPublicacion, new { htmlAttributes = new { @class = "form-
control" } })
@Html.ValidationMessageFor(model => model.dFechaPublicacion, "", new { @class = "text-danger"
})
</div>
</div>

<div class="form-group">
@Html.Label("Empresa", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("OpcionesEmp", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.sNombreEmpresa, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Fecha de Contratación", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.dFechaContratacion, new { htmlAttributes = new { @class =
"form-control" } })
@Html.ValidationMessageFor(model => model.dFechaContratacion, "", new { @class = "text-danger"
})
</div>
</div>

<div class="form-group">
@Html.Label("Numero de Vacantes", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.nVacantes, new { htmlAttributes = new { @class = "form-control"
} })
@Html.ValidationMessageFor(model => model.nVacantes, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Localidades", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("OpcionesLoc", null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.nTipoLocalidad, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
@Html.Label("Descripción", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.sDescripcion, new { htmlAttributes = new { @class = "form-
control", @cols = 80, @rows = 50 } })
@Html.ValidationMessageFor(model => model.sDescripcion, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<button type="submit" id="btnBuscar" class="btn btn-lg btn-primary "
onclick="location.href('@Url.Action("Actualizar","Home")')">Guardar</button>
</div>
</div>
</div>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
}
Ejercicio #6 – Eliminar

Desarrollo de Aplicaciones con Software Propietario.20


Guía #8: Conectando a Fuentes de Datos – Parte I

1. Dentro de nuestro clase “HomeController”, procedemos agregar los siguientes métodos:


[ActionName("Eliminar")]
public ActionResult Delete(string nIdOferta)
{
Conexion obj = new Conexion();
obj.conectar();
obj.EliminarDatos(int.Parse(nIdOferta));
obj.desconectar();

//Dropdown categorias
categorias ct = new categorias();

ct.Categorias = obj.getCategorias();
ViewBag.OpcionesCat = ct.Categorias;
//Dropdown empresa
Empresa emp = new Empresa();
emp.Empresas = obj.getEmpresas();
ViewBag.OpcionesEmp = emp.Empresas;
//Dropdown localidad
Localidad loc = new Localidad();
loc.Localidades = obj.getLocalidades();
ViewBag.OpcionesLoc = loc.Localidades;
//Ofertas
Datos data = new Datos();
data.DatosOfertas = obj.CargarDatos();
ViewBag.Ofertas = data.DatosOfertas;
return View("Index");
}

V. DISCUSION DE RESULTADOS

Observe el siguiente diagrama de clases.


A partir del mismo, elabore la base de datos registro_de_notas, y una aplicación web asp, donde se pueda
realizar los 4 mantenimientos básicos mostrar, insertar, actualizar y modificar de las notas de los alumnos:

Entre los archivos de recursos de esta practica, se le proporciona el archivo de consulta


(BDD_Registro_de_notas.sql), con el cual podrá crear la bdd a utilizar para este ejercicio.

Desarrollo de Aplicaciones con Software Propietario.21


Guía #8: Conectando a Fuentes de Datos – Parte I

VI. BIBLIOGRAFÍA

1. Thierry GROUSSARD. (2013). C# 5: Los fundamentos del lenguaje – Desarrollar con Visual Studio 2012.
Barcelona: ENI.

Desarrollo de Aplicaciones con Software Propietario.22

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy