ASP.NET
 

Código de Visual Basic 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 Basic 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 Basic 2005

Imports System.Data.SqlClient

' Para la función generarClaveSHA1
Imports System.Security.Cryptography

Partial Class AgregarUsuario
    Inherits System.Web.UI.Page

    Protected Sub btnNuevo_Click( _
                ByVal sender As Object, _
                ByVal e As System.EventArgs) _
                Handles btnNuevo.Click

        Me.lblAviso.Text = ""
        '
        ' Comprobamos si el nombre ya existe
        Using cnn As New SqlConnection(Me.SqlDataSource1.ConnectionString)
            Dim cmd As 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
            Dim i As Integer
            i = CInt(cmd.ExecuteScalar())
            If i > 0 Then
                ' Avisamos y salimos
                Me.lblAviso.Text = "El usuario ya existe"
                Exit Sub
            End If
            ' Al salir del bloque Using se cierra la conexión
        End Using
        ' El usuario no existe, lo añadimos
        Using cnn As New SqlConnection(Me.SqlDataSource1.ConnectionString)
            ' Usamos el comando Insert del DataSource
            Dim cmd As New SqlCommand(Me.SqlDataSource1.InsertCommand, cnn)
            ' Abrimos la conexión
            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
            Dim clave As String
            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
        End Using
        Me.lblAviso.Text = "Se ha añadido el nuevo usuario correctamente"

    End Sub

    ' 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 Function generarClaveSHA1(ByVal clave As String) As String
        ' Crear una clave SHA1 como la generada por 
        ' FormsAuthentication.HashPasswordForStoringInConfigFile
        Dim enc As New UTF8Encoding
        Dim data() As Byte = enc.GetBytes(clave)
        Dim result() As Byte
        '
        Dim sha As 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.
        Dim sb As New StringBuilder
        For i As Integer = 0 To result.Length - 1
            ' Para que tengan 2 cifras hexadecimales
            ' y las letras sean en mayúsculas
            sb.Append(result(i).ToString("X2"))
        Next
        '
        Return sb.ToString()
    End Function

    ' 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 Sub CustomValidator1_ServerValidate(ByVal source As Object, _
                ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) _
                Handles CustomValidator1.ServerValidate
        args.IsValid = (args.Value.Length > 5)
        'If args.Value < 6 Then
        '    args.IsValid = False
        'End If
    End Sub
End Class

 

Volver a la página explicativa

 



Ir al índice principal de el Guille