ADO .NET - Camada de Acesso a dados Genérica 2 (revisitado)


Na primeira parte deste artigo criamos projeto no VS 2012 Express for desktop e definimos a nossa camada de acesso a dados usando os recursos das ADO .NET.

Vamos agora mostrar que podemos acessar banco de dados distintos usando a mesma camada sem alterar o código.

O correto seria criarmos uma camada de negócios para isolar a nossa interface da camada de acesso  dados mas como nosso objetivo é mostrar que a nossa camada de acesso a dados funciona eu deixo isso como um exercício para você fazer.

Testando a camada de acesso a dados genérica

Como já criamos o projeto Windows Forms vamos aproveitar e definir no arquivo de configuração do projeto, o arquivo  App.Config, as strings de conexão que iremos usar. Fazemos isso inserindo uma seção <connectionstring> após a tag <configuration> onde definimos três propriedades importantes:

Abaixo vemos essas definições para o

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="SQLServerConnectionString" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=Estoque;Integrated Security=True" providerName="System.Data.SqlClient"/>
    <add name="MySQLConnectionString" connectionString="Server=localhost;Database=Cadastro;Uid=root;Pwd=******;Connect Timeout=30;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

Temos que referenciar neste projeto o projeto da nossa camada de acesso a dados. Para isso clique com o botão direito sobre o nome do projeto e selecione Add Reference;

A seguir clique na guia Solution e marque o projeto DALGeneric e clique em OK;

Pronto !

Agora vamos testar...

1- Testando para o SQL Server

O Banco de dados SQL Server usado chama-se Estoque.mdf e vamos acessar a tabela Categorias que possui uma estrutura bem simples:

Vamos aproveitar e criar uma stored procedure chamada ListaCategorias no banco de dados para podermos testá-la em nosso código.

Eu não vou entrar em detalhes na criação da stored procedure mas basta clicar co o botão direito sobre o objeto Stored Procedures na janela DataBase Explorer e selecionar Add New Stored Procedure e digitar o código abaixo:

CREATE PROCEDURE dbo.ListaCategorias
AS
    SELECT
* from Categorias
RETURN
0

Após isso vamos definir no arquivo form1.vb a nossa interface. Inclua a partir da ToolBox os controles baixo no formulário:

Defina o seguinte leiaute no formulário:

No evento Click do botão de comando Carregar inclua o código abaixo:

Private Sub btnCarregar_Click(sender As Object, e As EventArgs) Handles btnCarregar.Click
        carregaCategorias()
    End Sub

Agora crie uma rotina chamada carregaCategorias() com o seguinte código:

 Public Sub carregaCategorias()
        Dim dt = New DataTable
        Dim ds = New DataSet
        Dim cmd = "ListaCategorias"
     Dim sql = "Select * from Categorias"
        ds = DALGeneric.AcessoGenericoDB.ExecutarComando(cmd, CommandType.StoredProcedure, Nothing, DALGeneric.AcessoGenericoDB.TipoDeComando.ExecuteDataSet)
        dt = DALGeneric.AcessoGenericoDB.ExecutarComando(sql, CommandType.Text, Nothing, DALGeneric.AcessoGenericoDB.TipoDeComando.ExecuteDataTable)
        For Each item As DataRow In dt.Rows
            lbCategorias.Items.Add(item("nome"))
        Next
        dgvCategorias.DataSource = ds.Tables(0)
    End Sub

Neste código temos o seguinte:

Criamos uma instância de um datatable (dt) e de um dataset (ds)

A seguir definimos os comandos SQL primeiro usando a stored procedure (cmd) e depois a instrução texto (sql)

A seguir usamos o método ExecutarComando da nossa camada de acesso a dados passando os parâmetros de forma a retornar um dataset (ExecuteDataSet) e um datatable (ExecuteDataTable)

Para o datatable percorremos as linhas e exibimos no listbox e para o dataset atribuímos o resultado ao controle DataGridView.

O resultado final pode ser visto abaixo:

Testamos assim a instrução SQL no formato texto e usando uma stored procedure. Legal, funcionou direitinho !

Mas agora eu vou fazer  uma pergunta para você responder.

Como a aplicação sabe que tem que abrir a conexão com o banco de dados SQL Server ?

Na  última parte deste artigo iremos testar a nossa camada de acesso a dados genérica com o banco de dados MySQL :
ADO .NET - Camada de Acesso a dados Genérica 3 (revisitado)

Mar 1:1 Princípio do evangelho de Jesus Cristo, Filho de Deus.

Mar 1:2 Conforme está escrito no profeta Isaías: Eis que envio ante a tua face o meu mensageiro, que há de preparar o teu caminho;

Mar 1:3 voz do que clama no deserto: Preparai o caminho do Senhor, endireitai as suas veredas;

Mar 1:4 assim apareceu João, o Batista, no deserto, pregando o batismo de arrependimento para remissão dos pecados.

    Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti