
23/05/2008, 08:30
|
| | Fecha de Ingreso: febrero-2005
Mensajes: 37
Antigüedad: 20 años Puntos: 0 | |
Respuesta: Sistema de identificación de usuarios VB2005 + Mysql Nada, utilizando el MySQLConnector tampoco:
Código:
Imports System.Data
Imports System.Data.Odbc
Public Class LoginForm1
Private veces As Integer = 0
Private Const NumeroIntentos As Integer = 3
Private cadenaCnn As String = "Driver={MySQL ODBC 5.1 Driver};Server=servidor.com;Database=prueba; User=prueba;Password=prueba"
Private Function comprobarUsuario( _
ByVal nombre As String, _
ByVal clave As String) As Boolean
' Conectar a la base de datos
Dim cnn As OdbcConnection = Nothing
'
Try
' Conectar a la base de datos de SQL Server
' (la cadena debe estar inicializada previamente)
cnn = New OdbcConnection(cadenaCnn)
cnn.Open()
' Definir la cadena que vamos a usar para comprobar
' si el usuario y el password son correctos.
' Utilizo parámetros para evitar inyección de código.
Dim sel As New System.Text.StringBuilder
' Usando COUNT(*) nos devuelve el total que coincide
' con lo indicado en el WHERE,
' por tanto, si la clave y el usuario son correctos,
' devolverá 1, sino, devolverá 0
sel.Append("SELECT COUNT(*) FROM administradores ")
sel.Append("WHERE Nombre = @Nombre AND Clave = @Clave")
' Definir el comando que vamos a ejecutar
Dim cmd As New OdbcCommand(sel.ToString, cnn)
' Creamos los parámetros
cmd.Parameters.Add("@Nombre", SqlDbType.NVarChar, 50)
cmd.Parameters.Add("@Clave", SqlDbType.NVarChar, 50)
'
' Asignamos los valores recibidos como parámetro
cmd.Parameters("@Nombre").Value = nombre
cmd.Parameters("@Clave").Value = clave
'
' Ejecutamos la consulta
' ExecuteScalar devuelve la primera columna de la primera fila
' por tanto, devolverá el número de coincidencias halladas,
' que si es 1, quiere decir que el usuario y el password son correctos.
Dim t As Integer = CInt(cmd.ExecuteScalar())
' Cerramos la conexión
cnn.Close()
'
' Si el valor devuelto es cero
' es que no es correcto.
If t = 0 Then
Return False
End If
Catch ex As Exception
MessageBox.Show("ERROR al conectar a la base de datos: " & vbCrLf & _
ex.Message, "Comprobar usuario", MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1)
Return False
Finally
If Not cnn Is Nothing Then
cnn.Dispose()
End If
End Try
'
' Si llega aquí es que todo ha ido bien
Return True
End Function
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
If comprobarUsuario(Me.UsernameTextBox.Text, Me.PasswordTextBox.Text) Then
Form1.Show()
Else
' Permitir varios intentos
veces = veces + 1
If veces < NumeroIntentos Then
Label1.Text = "Quedan " & (NumeroIntentos - veces) & " intentos"
Exit Sub
End If
Me.DialogResult = DialogResult.No
End If
Hide()
End Sub
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
Me.Close()
End Sub
End Class
|