Atualmente tem-se falado bastante a respeito de aplicações com acesso a dados em camadas. A programação em camadas é uma forma de facilitar o desenvolvimento e reaproveitar o código desenvolvido, além de evitar alguns trabalhos extras quando acontecem determinadas mudanças.

Para trabalhar dessa forma desenvolvi uma classe que chamei de AcessarBD. Nesta classe farei todo o acesso a dados.
Veja o modelo abaixo:

Imports System.Data
Imports System.Data.OleDb


    Public Class AcessarBD

 Atributo
        Private strConexao As String

        Construtor da Classe
        Public Sub New(ByVal _Conexao As String)
            strConexao = _Conexao
        End Sub
 
 Propriedade
        Public Property Conexao() As String
            Get
                Return strConexao
            End Get
            Set(ByVal value As String)
                strConexao = value
            End Set
        End Property
 
        Public Function retornarConsulta (ByVal sql as String) As DataSet

            Dim ds As new DataSet
            Dim conexao As new OleDbConnection(strConexao)
            Dim comando As new OleDbCommand()
            Dim adapter As new OleDbDataAdapter()

     comando.Connection = conexao


            comando.CommandType = CommandType.Text
      comando.CommandText = sql

          
            adapter.SelectCommand = cmd

            preenche o dataset com os dados
            ds = New DataSet("Dados")
            adapter.Fill(ds)

            retorna o dataset
            Return ds
        End Function


    Public Sub ExecutaConsulta (ByVal sql as String)

          
            Dim conexao As new OleDbConnection(strConexao)
            Dim comando As new OleDbCommand()
        

     comando.Connection = conexao


            comando.CommandType = CommandType.Text
      comando.CommandText = sql

          
            conexao.Open()
     comando.ExecuteNomQuery()
     conexao.Close()

         
        End Function

    End Class


Após criada a camada de dados, vamos criar uma camada que chamamos de camada de Negócios. Para isso vou criar uma Classe que  chamarei de Cliente.


Imports System.Data
Imports System.Data.OleDb


    Public Class Cliente

 Atributo
        Private strNomeCliente As String
 Private acessoDados as New AcessarBD ("String de conexao")

        Construtor da Classe
        Public Sub New(ByVal _nomeCliente As String)
            strNomeCliente  = _nomeCliente
        End Sub
 
 Propriedade
        Public Property Cliente() As String
            Get
                Return strNomeCliente
            End Get
            Set(ByVal value As String)
                strNomeCliente = value
            End Set
        End Property
 
        Public Function exibirClientes()  as DataSet
  acessoDados.retornarConsulta("Consulta SQL")
        
        End Function


    Public Sub InserirCliente ()

          acessoDados.ExecutaConsulta ("Consulta SQL")
         
        End Function

    End Class

 

Pronto, a Classe Cliente está programada.
Agora é só partir para a camada de Interface onde podemos implementar a parte visual do nosso projeto que poderá ser um WindowsForm ou WebForms.

Dessa forma se precisarmos mudar o BD, vamos para a classe de acesso a dados e se precisar modificar alguma coisa da classe é só ir na Classe Cliente.