none
Como puedo realizar login en 4 capas RRS feed

  • Pregunta

  • Hola comunidad, necesito de la ayuda de ustedes. Estoy recien comenzando a dar mis pasos en el desarrollo .NET y me encuentro trabajando en una estructura de capas. Capa de Datos, de Entidad, de Negocios y de Presentación. He visto muchos trabajos en   capas, pero no me sirve. Por otra parte he visto que trabajan mucho con procedimientos de almacenado. Tampoco me sirve. Mis consultas tienen que ser directas a través de las sentencias SQL. 

    Me encuentro realizando un login y no encuentro la forma de hacerlo correctamente. Tengo dudas sobre si debo de instanciar la clase entidad en la función de la capa de datos o usar un DataReader. A continuación les copio mi código y desde ya agradezco su ayuda.

     CAPA DATOS

    Function IniciarSesion(ByVal Usuario As String, ByVal Contraseña As String) As CEPersonal

            Dim Obj As New CEPersonal
            cn = ObjConexion.Conectar
            cm.Connection = cn
            cm.CommandType = CommandType.Text
            cm.CommandText = ("SELECT FROM PERSONAL WHERE Usuario = @Usuario and Contrasena = @Contrasena ")
            cm.Parameters.Add("@Usuario", OdbcType.VarChar, 20).Value = Usuario
            cm.Parameters.Add("@Contrasena", OdbcType.VarChar, 20).Value = Contraseña

            cn.Open()

            Return Obj

        End Function

    CAPA NEGOCIOS 

    Function Iniciar(ByVal Usuario As String, ByVal Contrasena As String) As CEPersonal
            Return ObjCapaDatos.IniciarSesion(Usuario, Contrasena)
        End Function

    CAPA PRESENTCIÓN

    Dim Obe As New CEPersonal
    Dim Obn As New CNPersonal

    Sub Acceso_Login(ByVal Usuario As String, ByVal Contrasena As String)
            Obe = Obn.Iniciar(Usuario, Contrasena)

            If Obe.Usuario Is Nothing Then

                'Validamos que solo tenga 3 intentos, Luego se cierra el login'

                intento = intento + 1

                MsgBox("Usuario o Contraseña incorrectos....!" & Chr(13) & 3 - intento & " Intentos...!", MsgBoxStyle.Critical, "Error de Ingreso")

                If intento = 3 Then
                    Me.Close()
                End If
            Else
                Areadetrabajo.Hide()
                Areadetrabajo.Show()


            End If
        End Sub


    martes, 18 de septiembre de 2018 16:08

Respuestas

  • hola

    cuando defines IniciarSesion() en ningun momento ejecutas el SELECT, se supone debes hacer el ExecuteReader() aunque en un login no se retorna el usuario, devuelve true\false

        Function IniciarSesion(ByVal Usuario As String, ByVal Contraseña As String) As Boolean
    
            
            Dim cn As SqlConnection = ObjConexion.Conectar()
    	cn.Open()
    		
    	Dim query As String = "SELECT COUNT(*) FROM PERSONAL WHERE Usuario = @Usuario and Contrasena = @Contrasena"
            Dim cm As New SqlCommand(query, cn)
            cm.Parameters.Add("@Usuario", OdbcType.VarChar, 20).Value = Usuario
            cm.Parameters.Add("@Contrasena", OdbcType.VarChar, 20).Value = Contraseña
    
            Dim result As Integer = Convert.ToIn32(cm.ExecuteScalar())
    
            Return result > 0
    
        End Function

    Analiza el ejemplo del articulo

    [WinForms] Edición Empleados

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Pablo Rubio martes, 2 de octubre de 2018 14:52
    martes, 18 de septiembre de 2018 17:37