none
VB.NET 2008 - Como conectar a Access 2003 usando capas RRS feed

  • Pregunta

  • Estimados,

    actualmente tengo una aplicación que utiliza MySQL, el problema es que debo recuperar algunos registros de una base de datos de Access 2003. No puedo convertir Access a MySQL para usar una sola base de datos porque la aplicacíón que utiliza Access, esta siendo utilizada.

    Como puedo mantener mi estructura de capas para trabajar con Access?

    CAPA DATOS
    
    Imports MySql.Data
    
    Public Class Conexion
    
     Public Sub ConectarBD()
            Try
                Me.pMySQLcon = New MySqlConnection
                Me.pMySQLcon.ConnectionString = "Data Source = " & DataSourceDesencriptada & " ; " _
                & "User ID = " & UserIdDesencriptada & " ; " _
                & "Database = " & DataBaseDesencriptada & " ; " _
                & "Password = " & PasswordDesencriptada & " ; " _
                & "Port = 3306"
    
            Catch ex As Exception
    
            End Try
        End Sub
    End Class
    
    
    Public Class Cuenta
        Public Function BusquedaCuenta() As DataSet
            Dim oConectarBD As New Conexion
            oConectarBD.ConectarBD()
    
            Try
                Dim SQL As String = "CALL sp_CuentaBuscar()"
    
                oConectarBD.pMySQLAdaptador = New MySqlDataAdapter(SQL, oConectarBD.pMySQLcon)
                oConectarBD.pDataset = New DataSet
                oConectarBD.pMySQLcon.Open()
                oConectarBD.pMySQLAdaptador.Fill(oConectarBD.pDataset, "Cuenta")
                oConectarBD.pMySQLcon.Close()
            Catch ex As Exception
    
                MsgBox("Se ha detectado un error al momento de procesar la información"", MsgBoxStyle.Exclamation, "PHOENIX Inspire - IntelliSense")
            Finally
                If Not (oConectarBD Is Nothing) Then oConectarBD.pMySQLcon.Close()
            End Try
    
            Return oConectarBD.pDataset
        End Function
    End Class
    
    
    CAPA NEGOCIO
    
    Public Class Cuenta
        Public Function BusquedaCuenta() As DataSet
            Dim CTA As New Data.Cuenta
            Dim Data As New DataSet
    
            Data = CTA.BusquedaCuenta()
    
            Return Data
        End Function
    End Class

     

    miércoles, 14 de abril de 2010 19:44

Respuestas

  • hola

    como lo estas armando no puedes, ya que usas los objetos de ado.net para mysql, y Ms Access necesita los de OleDb

    igualmente veo algunos puntos que no estan correctos

    - por ejemplo para invocar un SP, no necesitas suar el CALL, puedes suar un objeto command

    podrias usar algo como esto:

     

    Imports MySql.Data

    Public Class Conexion

     Public Function ConectarBD() As String
     
            Return "Data Source = " & DataSourceDesencriptada & " ; " _
                & "User ID = " & UserIdDesencriptada & " ; " _
                & "Database = " & DataBaseDesencriptada & " ; " _
                & "Password = " & PasswordDesencriptada & " ; " _
                & "Port = 3306"

        End Sub
    End Class


    Public Class Cuenta

        Public Function BusquedaCuenta() As DataSet

            Try
                Dim ds As New DataSet
               
                Using conexion As New MySqlConnection(oConectarBD.ConectarBD())

                    Dim cmd As MySqlCommand("sp_CuentaBuscar" , conexion)
                    cmd.CommandType = CommandType.StoredProcedure
                   
                    Dim da As New MySqlDataAdapter(SQL, oConectarBD.pMySQLcon)
                    da.Fill(ds, "Cuenta")
                   
                End Using
               
            Catch ex As Exception
                MsgBox("Se ha detectado un error al momento de procesar la información"", MsgBoxStyle.Exclamation, "PHOENIX Inspire - IntelliSense")

            End Try

            Return ds
        End Function
    End Class


    CAPA NEGOCIO

    Public Class Cuenta
        Public Function BusquedaCuenta() As DataSet
            Dim Data As DataSet

            Data = CTA.BusquedaCuenta()

            Return Data
        End Function
    End Class

     

    a veces veo que por tratar de encapsular duncionaldiad se arma terrible galleta de codigo, cuando programarlo de la forma tradicional es tan simple y queda re bien en el codigo

    veras como se uso el

    cmd.CommandType = CommandType.StoredProcedure

    y solo con el nombre del SP se puede invocar

     

    pero bueno tu pregunta apuntaba a usar Access, el tema es que deberas crear una capa de acceso a datos diferentes porque esta al usar los objetos de ado.net del provider de mysql lo has creado especifico para esta db sin posibilidad de usar otro tipo de db

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 14 de abril de 2010 20:15