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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#