ASP.NET
 

Código de Visual C# de la página AgregarUsuario.aspx del Tutorial de acceso a datos desde páginas Web usando Visual Web Developer 2005

 

Publicado el 03/Feb/2007
Actualizado el 03/Feb/2007
Autor: Guillermo 'guille' Som

 


 

 

Este es el código de Visual C# 2005 de la página que habrás creado usando las indicaciones de la primera parte del Tutorial de acceso a datos en sitio Web creado con Visual Web Developer 2005 Express y SQL Server 2005 Express.

 

 El código de Visual C# 2005

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;
using System.Text;
using System.Security.Cryptography;

public partial class AgregarUsuario_cs : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        this.lblAviso.Text = "";
        //
        // Comprobamos si el nombre ya existe
        using (SqlConnection cnn = new SqlConnection(this.SqlDataSource1.ConnectionString))
        {
            SqlCommand cmd = new SqlCommand( 
                "SELECT Count(*) " + 
                "FROM Usuarios " + 
                "WHERE Correo = @Correo", cnn);
            // Abrimos la conexión
            cnn.Open();
            // Añadimos el valor del parámetro de la consulta
            cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text);
            // Si devuelve algun valor, es que ya existe
            int i = (int)cmd.ExecuteScalar();
            if( i > 0 )
            {
                // Avisamos y salimos
                this.lblAviso.Text = "El usuario ya existe";
                return;
            }
            // Al salir del bloque using se cierra la conexión
        }
        // El usuario no existe, lo anadimos
        using (SqlConnection cnn = new SqlConnection(this.SqlDataSource1.ConnectionString))
        {
            // Usamos el comando Insert del DataSource
            SqlCommand cmd = new SqlCommand(this.SqlDataSource1.InsertCommand, cnn);
            // Abrimos la conexion
            cnn.Open();
            // Añadimos el valor del parámetro de la consulta
            cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text);
            // La clave la guardaremos como un valor SHA1
            string clave;
            clave = FormsAuthentication.HashPasswordForStoringInConfigFile( 
                txtClave.Text, "SHA1");
            //clave = generarClaveSHA1(txtClave.Text);
            cmd.Parameters.AddWithValue("@Clave", clave);
            // La fecha será la actual
            txtFecha.Text = DateTime.Now.ToString();
            cmd.Parameters.AddWithValue("@Fecha", txtFecha.Text);
            cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text);
            cmd.Parameters.AddWithValue("@Comentarios", txtComentarios.Text);
            // Ejecutamos el comando de inserción
            cmd.ExecuteNonQuery();
            // Al salir del bloque using se cierra la conexión
        }
        this.lblAviso.Text = "Se ha añadido el nuevo usuario correctamente";
    }

    // Esta función es la que puedes usar en lugar del método
    // HashPasswordForStoringInConfigFile
    // Necesita una importación del espacio de nombres:
    // System.Security.Cryptography
    private string generarClaveSHA1(string clave)
    {
        // Crear una clave SHA1 como la generada por
        // FormsAuthentication.HashPasswordForStoringInConfigFile
        UTF8Encoding enc = new UTF8Encoding();
        byte[] data = enc.GetBytes(clave);
        byte[] result;
        //
        SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
        result = sha.ComputeHash(data);
        //
        // Convertir los valores en hexadecimal
        // cuando tiene una cifra hay que rellenarlo con cero
        // para que siempre ocupen dos dígitos.
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < result.Length; i++)
        {
            // Para que tengan 2 cifras hexadecimales
            // y las letras sean en mayúsculas
            sb.Append(result[i].ToString("X2"));
        }
        //
        return sb.ToString();
    }

    // Este código solo es necesario si no se valida en el lado del cliente,
    // lo dejo porque forma parte de las pruebas a realizar.
    //
    // Pero para usarlo en el lado del cliente hay que comentarlo.
    protected void CustomValidator1_ServerValidate(object source, 
        System.Web.UI.WebControls.ServerValidateEventArgs args)
    {
        args.IsValid = (args.Value.Length > 5);
    }  

}

 

Volver a la página explicativa

 



Ir al índice principal de el Guille