Multicapas

Vaya de aquí a un tiempo, me doy un poquitín de espacio para poder compartir con Ud’s más ejemplos sobre programación multicapas, es bastante sencillo pero bien efectivo y fácil de comprender para todos aquellos que están iniciándose en el mundo de la programación. Claro hay una infinidad de ejemplos en muchos sitios pero a ver cómo les va este ejemplo… Bien, eh en el gráfico de abajo podemos ver mediante el explorador de soluciones como está distribuido las tres capas que es lo que comúnmente se implementa en un programa de escritorio, como podemos apreciar se creó un proyecto de consola para llevar a cabo este ejemplo.

 

 

 

 

 

 

 

 

 

En la capa de acceso a datos (AccesoBD) creamos la clase BaseDatos.vb escribimos el siguiente código:

Imports System.Data
Imports System.Data.SqlClient

Public Class BaseDatos
    Private conexion As String = "Data Source=(local);Initial Catalog=BD;Integrated Security=true"
    Private cn As SqlClient.SqlConnection
    Private cmd As SqlCommand

    Public Sub Conectar()
        Try
            cn = New SqlConnection(conexion)
            cn.Open()
            Console.WriteLine("Conexion exitosa")
        Catch ex As SqlException
            Console.WriteLine(ex.Message, "Fallo la conexion")
        End Try
    End Sub
    Public Sub desconectar()
        Try
            cn.Close()
            Console.WriteLine("BD sin conexion")
        Catch ex As Exception
            Console.WriteLine(ex.Message, "Fallo la operacion")
        End Try
    End Sub
    Public Sub CrearComando(ByVal strSQL As String)
        cmd = New SqlCommand(strSQL)

        cmd.Connection = cn
        cmd.CommandType = CommandType.Text
        cmd.CommandText = strSQL

    End Sub
    Public Function EjecutarConsulta() As SqlDataReader
        Return cmd.ExecuteReader()
    End Function
End Class

Ahora bien de igual manera creamos pues en la capa de lógica de negocios (LogicaNegocio) creamos la clase Cliente.vb y escribimos el siguiente codigo:

Public Class Cliente
    Private _ID As Integer
    Private _Nombre As String
    Private _Apellidos As String
    Private _Edad As Integer
    Public Sub New(ByVal id As Integer, ByVal nom As String, ByVal ape As String, ByVal e As Integer)
        _ID = id
        _Nombre = nom
        _Apellidos = ape
        _Edad = e
    End Sub
    Public Property ID() As Integer
        Get
            Return _ID
        End Get
        Set(ByVal value As Integer)
            _ID = value
        End Set
    End Property
    Public Property Nombre() As String
        Get
            Return _Nombre
        End Get
        Set(ByVal value As String)
            _Nombre = Nombre
        End Set
    End Property
    Public Property Apellido() As String
        Get
            Return _Apellidos
        End Get
        Set(ByVal value As String)
            _Apellidos = Apellido
        End Set
    End Property
    Public Property Edad() As Integer
        Get
            Return _Edad
        End Get
        Set(ByVal value As Integer)
            _Edad = value
        End Set
    End Property
End Class

Seguidamente creamos otra clase ObtenerCliente.vb en la misma capa con el código siguiente:

Imports AccesoBD

Public Class ObtenerCliente
    Public Function ObtenerDatos() As List(Of Cliente)
        Dim clientes As List(Of Cliente) = New List(Of Cliente)
        Try
            Dim sql As String = "SELECT * FROM Cliente"
            Dim bd As BaseDatos = New BaseDatos
            bd.Conectar()
            bd.CrearComando(sql)
            Dim datos As SqlClient.SqlDataReader = bd.EjecutarConsulta
            Dim clie As Cliente = Nothing
            While datos.Read()
                Try
                    clie = New Cliente(datos.GetInt32(0), datos.GetString(1), datos.GetString(2), datos.GetInt32(3))
                    clientes.Add(clie)
                Catch ex As Exception
                    Console.WriteLine(ex.Message)
                End Try
            End While
            datos.Close()
            bd.desconectar()
        Catch ex As Exception
            Console.WriteLine(ex.Message, "Error al obtener los datos de cliente")
        End Try
        Return clientes
    End Function
End Class

Ok hasta este punto solo nos faltaría completar nuestro ejemplo introduciendo siguiente código en el Module1.vb que vendría a ser la capa de presentación

Imports LogicaNegocio

Module Module1
    Sub Main()
        Dim objCliente As ObtenerCliente = New ObtenerCliente()
        Dim datosCliente As List(Of Cliente) = objCliente.ObtenerDatos()
        For Each cli As Cliente In datosCliente
            Console.WriteLine(cli.ID.ToString.PadRight(3) + Chr(7) + _
                                cli.Nombre.PadRight(15) + Chr(7) + cli.Apellido.PadRight(25) + Chr(7) + _
                                cli.Edad.ToString)
        Next
        Console.ReadLine()
    End Sub
End Module

Ahora bien no crean que me he olvidado se preguntara y cual es la base de datos pues es muy simple una pequeña BD llamada así con solo una tabla Clientes y para que podeis bajarlo este ejemplo en este link EJEMPLO MULTICAPA

Anuncios

2 thoughts on “Multicapas

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s