Imports System.Data
Imports System.Data.SqlClient
Partial Class ModificarUsuario
Inherits System.Web.UI.Page
Protected Sub btnActualizar_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles btnActualizar.Click
Me.lblAviso.Text = ""
'
' Comprobamos si el nombre ya existe
Using cnn As New SqlConnection(Me.SqlDataSource1.ConnectionString)
' El valor que necesitamos es el ID
Dim cmd As New SqlCommand( _
"SELECT ID " & _
"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 cero, es que no existe
Dim i As Integer
i = CInt(cmd.ExecuteScalar())
If i = 0 Then
' Avisamos y salimos
Me.lblAviso.Text = "El usuario NO existe"
Exit Sub
End If
' Si llegamos aquí, es que el usuario existe
' Deberíamos hacer las comprobaciones de que haya datos que guardar,
' pero... eso te lo dejo a ti...
'
' Seguimos usando la misma conexión, pero cambiamos el comando
' Usamos el comando Update del DataSource
cmd = New SqlCommand(Me.SqlDataSource1.UpdateCommand, cnn)
' Añadimos el valor del parámetro de la consulta
cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text)
' La clave la guardaremos como un valor SHA1
' pero como ya estará como SHA1, simplemente la asignamos
cmd.Parameters.AddWithValue("@Clave", txtClave.Text)
' Esto nos puede dar problemas dependiendo del forma
' del servidor en el que está la base de datos
cmd.Parameters.AddWithValue("@Fecha", txtFecha.Text)
cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text)
cmd.Parameters.AddWithValue("@Comentarios", txtComentarios.Text)
' El valor de la variable i es el ID a actualizar
cmd.Parameters.AddWithValue("@ID", i)
' Ejecutamos el comando de actualización
' podemos usar el método Update del DataSource
' (pero no actualiza nada)
'Me.SqlDataSource1.Update()
' Mejor con una llamada a ExecuteNonQuery
cmd.ExecuteNonQuery()
' Al salir del bloque Using se cierra la conexión
End Using
Me.lblAviso.Text = "Se han actualizado los datos correctamente"
End Sub
Protected Sub btnMostrar_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles btnMostrar.Click
Me.lblAviso.Text = ""
'
' Comprobamos si el nombre ya existe
Using cnn As New SqlConnection(Me.SqlDataSource1.ConnectionString)
' La cadena de slección será la que tenga el DataSource,
' pero buscando el correo que hemos escrito
'Dim sel As String
'sel = Me.SqlDataSource1.SelectCommand & _
' "WHERE Correo = @Correo"
'Dim cmd As New SqlCommand(sel, cnn)
' Usando un procedimiento almacenado
Dim cmd As New SqlCommand()
cmd.CommandText = "MostrarUsuario"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
' Abrimos la conexión
cnn.Open()
' Añadimos el valor del parámetro de la consulta
cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text)
' El resultado lo guardaremos en una tabla
Dim tabla As New DataTable
' Usaremos un DataAdapter para leer los datos
Dim da As New SqlDataAdapter(cmd)
' Llenamos la tabla con los datos leídos
da.Fill(tabla)
' Si la tabla no tiene filas, es que no existe ese usuario
If tabla.Rows.Count = 0 Then
' Avisamos y salimos
Me.lblAviso.Text = "El usuario NO existe"
Exit Sub
End If
' Mostramos los datos
' que estarán en la primera fila de la tabla,
' ya que solo debería haber un solo usuario con ese correo
Me.txtClave.Text = tabla.Rows(0)("Clave").ToString
Me.txtFecha.Text = tabla.Rows(0)("Fecha").ToString
Me.txtNombre.Text = tabla.Rows(0)("Nombre").ToString
Me.txtComentarios.Text = tabla.Rows(0)("Comentarios").ToString
Me.lblAviso.Text = "El usuario existe y se han leído los datos."
' Al salir del bloque Using se cierra la conexión
End Using
End Sub
Protected Sub btnClaveSha1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles btnClaveSha1.Click
' Generar la clave SHA1 a partir de lo que haya en txtClave
' y asignar nuevamente a ese mismo textBox el resultado
Dim clave As String
clave = FormsAuthentication.HashPasswordForStoringInConfigFile( _
txtClave.Text, "SHA1")
txtClave.Text = clave
End Sub
End Class
|