Curso sobre programacion c# y Visual Studio 2019. En este blog veremos tutoriales para aprender a crear nuestras aplicaciones de consola,aplicaciones web, SQL , Tensorflow y Machine Learning
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver un control de uso común en muchas de las páginas web que utilizamos habitualmente. Este control es el Calendar, que permite a un usuario seleccionar una fecha mediante un calendario visual.
- El control Calendar muestra un calendario en el que los usuarios pueden
desplazarse a cualquier día de cualquier año. Cuando se ejecuta la
página ASP.NET, el control Calendar se representa como una tabla HTML.
En consecuencia, ciertas propiedades del control corresponden a varios
aspectos del formato de la tabla.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class EjemploControlesVarios : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Calendar1.SelectedDate = DateTime.Now;
lblMostrar.Text = Calendar1.SelectedDate.ToShortDateString();
}
}
protected void btnClic_Click(object sender, EventArgs e)
{
if (Calendar1.SelectedDate < DateTime.Now)
lblMostrar.Text = "No puede seleccionar una fecha anterior a hoy";
else
lblMostrar.Text = "OK";
}
}
}
- En este capítulo del curso de programación en c# con visual studio
2017 aprenderemos a encriptar password utlilizando el espacion de nombres System.Security.Cryptography disponible en los frameworks de .net.
- El
espacio de nombres System.Security.Cryptography proporciona servicios criptográficos, incluidas la
codificación y descodificación segura de datos, así como muchas otras
operaciones, como cálculos hash, generación de números aleatorios y la
autenticación de mensajes.
- Una vez tengamos la contraseña cifrada la guardamos en la base de datos mediante una llamada a un procedimiento almacenado. En el video tenéis todo el proceso, tanto el cifrado como la llamada al procedimiento almacenado para guardar en base de datos.
- Os dejo unos enlaces a páginas donde podéis completar información sonre este tema:
using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { swEncrypt.Write(cadena);
} encrypted = msEncrypt.ToArray(); }
}
} return encrypted; }
private string DesencriptarStringFromBytesAes(byte[] textoCifrado, byte[] clave, byte[] IV) { if (textoCifrado == null || textoCifrado.Length <= 0) throw new ArgumentNullException("cipherText"); if (clave == null || clave.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); string plaintext = null;
using (MemoryStream msDecrypt = new MemoryStream(textoCifrado)) {
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { plaintext = srDecrypt.ReadToEnd();
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class AltaUsuario : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
28- . Aplicaciones web.Llamando a BDDD desde la aplicación
- En este capítulo del curso de programación en c# con visual studio
2017,continuamos con un poco de SQL SERVER. Para ello debéis tener instalado SQL Express.En la anterior entrada del blog os deje un enlace para que lo pudierais descargar e instalar.
- En este capítulo conectamos nuestra página de alta de usuario a nuestra base de datos SQL via procedimientos almacenado. Para ello necesitamos establecer una cadena de conexión, que podemos inicializar en el web.config, que es el archivo principal de opciones de configuración para una aplicación web hecha en asp.net. El archivo es un documento que define información de configuración concerniente a la aplicación
web. El archivo web.config contiene información que controla la carga de
módulos, configuraciones de seguridad, configuraciones del estado de la
sesión, opciones de compilación y el lenguaje de la aplicación. Los
archivos web.config pueden contener también objetos específicos tales
como cadenas de conexión.En nuestro caso la cadena de conexión va con autenticación windows en vez de con usuario y password : <connectionStrings> <add name="EmpresaConnectionString" connectionString="Data Source=LAPTOP-C3OQ67NM\SQLEXPRESS;Initial Catalog=Empresa;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>
- Una vez que tenemos inicializada la cadena de conexión, la utilizamos para cargar el combo con los paises via procedimiento almacenado y para guardar los datos de un usuario que utilice el formulario de alta. Los procedimientos almacenados que llamamos desde el código son los siguientes:
El procedimiento que nos devuelve los paises es el siguiente:
ALTER PROCEDURE [dbo].[DamePaises]
AS BEGIN
SET NOCOUNT ON;
SELECT Pais,CodPais FROM Paises order by 2 asc
END
El procedimiento almacenado que se encarga de guardar el usuario es este:
ALTER PROCEDURE [dbo].[AltaUsuario] @nombre varchar(255), @email varchar(255), @pass varbinary(MAX)=NULL, @codPais varchar(3) AS BEGIN
SET NOCOUNT ON;
DECLARE @idpais int
SELECT @idpais=idPais FROM Paises WHERE CodPais = @codPais
INSERT INTO dbo.Usuarios(Nombre,Email,Pass,IdPais) VALUES (@nombre,@email,@pass,@idpais)
END
- Una vez que tenenos definidos los procedimientos almacenados que vamos a utlizar ya los podemos llamar desde nuestra aplicación cliente.Os dejo el código de la aplicación:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class AltaUsuario : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblError.Text = "Debes aceptar los términos y condiciones del servicio.";
}
else
{
guardarUsuario();
lblError.Text = "Usuario dado de alta correctamente";
lblError.ForeColor = Color.Green;
- En este capítulo del curso de programación en c# con visual studio
2017,empezaremos a ver un poco de SQL SERVER. Para ello debéis tener instalado SQL Express.En la anterior entrada del blog os deje un enlace para que lo pudierais descargar e instalar.
- Una vez instalado nos creamos una base de datos que utilizaremos para guardar los datos del formulario de registro que vimos en el capítulo anterior.Llamamos a la base de datos con el nombre Empresa.
- Una vez creada la base de datos nos creamos dos tablas para almacenar los datos. Una tabla a la que llamaremos Usuarios y otra tabla a la que llamaremos Paises.La tabla Usuarios tiene los siguientes campos:
Y la tabla Paises está compuesta por estos campos:
- Una vez tenemos definidas las dos tablas ya podemos guardar,borrar y consultar datos en ellas ya sea de forma manual o via script. Para el caso de guardar datos en la tabla usuarios nos creamos un procedimiento almacenado(mas información):
CREATE PROCEDURE [dbo].[AltaUsuario]
@nombre varchar(255),
@email varchar(255),
@pass varbinary(MAX)=NULL,
@codPais varchar(3)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @idpais int
SELECT @idpais=idPais FROM Paises WHERE CodPais = @codPais
INSERT INTO dbo.Usuarios(Nombre,Email,Pass,IdPais) VALUES
(@nombre,@email,@pass,@idpais)
END
- En la siguiente entrada del blog continuaremos con SQL.Veremos como conectar la aplicación web con la base de datos.
26- . Aplicaciones web.Creando un formulario de registro
- En este capítulo del curso de programación en c# con visual studio
2017,vamosa practicar el uso de algunos de los controles web vistos en las entradas anteriores del blog. Para ello nos crearemos una página web donde simularemos el alta en un servicio.En este formulario de registro practicamos el uso de estos controles:
Dropdownlist: Cargamos el combo con algunos paises.
Validadores: Utilizamos los validadores vistos en el capítulo anterior (RequiredFieldValidator, RegularExpressionValidator y CompareValidator) para controlar que el usuario introduzca todos los datos necesarios para darse de alta.
CheckBox: Forzamos que el usuario sólo pueda continuar en el caso que que este control este seleccionado.
TextBox:Campos que el usuario debe rellenar.
HyperLink: Link que redirige a una página de condiciones de servicio que nos hemos inventado.
- En el siguente cápitulo del cuso empezaremos con un poco de SQL.Asi que dejo el enlace donde podréis descargaros la versión express de forma gratuita:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class AltaUsuario : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblError.Text = "Debes aceptar los términos y condiciones del servicio.";
}
else
{
lblError.Text = "Usuario dado de alta correctamente";
lblError.ForeColor = Color.Green;
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver algunos de los controles de validación que trae este entorno de programación.Nos centraremos en tres de ellos: RequiredFieldValidator ,RegularExpressionValidator y CompareValidator:
RequiredFieldValidator: Con este control obligamos al usuario a que rellene todos los campos de entrada necesarios en un formulario.
RegularExpressionValidator: Comprueba que los datos proporcionados por el usuario coinciden con un modelo definido por una expresión regular.
CompareValidator : Compara los datos de los dos controles que se le especifiquen.
- El más complejo de los tres controles quizás sea el RegularExpressionValidator porque es necesario conocer el funcionamiento de las expresiones regulares.Para los que no sepáis lo que son aqui os dejo un enlace. En el video os explico como usar este control y los otros dos.
- Para comprender mejor las expresiones regulares vamos a intentar analizar una:
href: Busca coincidencias con la cadena literal "href".La búsqueda no distingue entre mayúsculas y minúsculas.
\s*:Busca coincidencias con cero o más caracteres de espacio en blanco.
=:Busca coincidencias con el signo de igualdad.
\s*:Busca coincidencias con cero o más caracteres de espacio en blanco.
(?:["'](?<1>[^"']*)"|(?<1>\S+)): Busca coincidencias con uno de los siguientes elementos sin asignar el resultado a un grupo capturado:
Una
comilla o apóstrofo, seguido de cero o más apariciones de cualquier
carácter que no sea una comilla o un apóstrofo, seguido por una comilla o
un apóstrofo.Este modelo incluye el grupo denominado 1.
Uno o más caracteres que no sean un espacio en blanco.Este modelo incluye el grupo denominado 1.
6. (?<1>[^"']*): Asigna cero o más apariciones de cualquier carácter distinto de una comilla o un apóstrofo al grupo de captura denominado 1. 7."(?<1>\S+): Asigna uno o más caracteres que no sean un espacio en blanco al grupo de captura denominado 1.
- Os dejo también unos enlaces para completar información sobre los tres controles vistos en el video: