VB 2005 - Criando uma classe para acesso a dados
É uma prática recomendável criar uma camada de acesso a dados e encapsular o seu código. Você ganha em produtividade e facilita a manutenção.
A seguir apresento algumas sugestões de classes com código de acesso a dados que você pode usar em seus projetos.
Abra o Visual Basic 2005 Express e crie um projeto do tipo Windows Application onde serão criadas as classes.
No menu Project clique na opção Add Class e na janela Add New Item selecione o template Class informando o nome acessoBD. Será criado o arquivo acessoBD.vb onde podemos criar as nossas classes para acesso a dados. Neste arquivo podemos criar uma ou várias classes.
Começamos criando a classe AcessoBD com um construtor vazio e outro construtor onde definimos a string de conexão. O método getConexao retorna a conexão aberta e o método closeConexao fecha a conexão;
![]() |
|
Nota: O modelo de configuração de formulário (Configuration Forms) não esta disponível em projetos Class Library pois não temos um arquivo App.Config para a DLL. Para ler o arquivo de configuração App.Config em sua aplicação VB 2005 , e exibir o resultado no console , você pode usar o seguinte código:
|
Vamos criar a seguir dois métodos sobrecarregados onde poderemos passar o nome de um procedimento armazenado - Stored Procedure - com parâmetros e no outro uma instrução SQL retornando um DataReader:
![]() |
Veremos a seguir um exemplo de como usar as classes acima em um formulário Windows Forms.
Aproveitando o mesmo projeto onde criamos a classe AcessoBD inclua no formulário form1.vb um controle ListBox e um botão de comando. No evento Click do botão de comando inclua o seguinte código:
|
Private
Sub Button1_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
'obtem a string de conexão do arquivo de configuração App.Config Dim strCon = My.Settings.NORTHWNDConnectionString 'cria uma instância da classe AccessBD usando o construtor 'que usa a string de conexao Dim oDB As New AcessoDB(strCon) Dim dr As SqlDataReader 'chama o método retornaDataReader passando uma instrução SQL dr = oDB.retornaDataReader( "Select * from Customers")'percorre o datareader e exibe os dados no listbox Do While dr.Read ListBox1.Items.Add(dr(0) & " - " & dr(1)) LoopEnd Sub |
O resultado será o preenchimento do ListBox conforme figura abaixo:
![]() |
Vamos agora criar um método que retorna um DataSet e que recebe o nome da stored procedure , o nome do DataTable a ser preenchido e a coleção de parâmetros:
![]() |
Para usar o exemplo acima irei acessar o banco de dados Northwind.mdf e usar a stored procedure CustOrderHist existente. Esta stored procedure possui o parâmetro @CustomerID que deve ser informado para o método juntamente como valor de retorno desejado. O DataTable retornado irá ser exibido em um controle DataGridView no formulário;
![]() |
Nota: A stored procedure CustOrderHist possui o seguinte código:
![]() |
A seguir inclua o código abaixo no evento Load do formulário:
|
Private
Sub Form2_Load(ByVal
sender As
Object,
ByVal e
As System.EventArgs)
Handles
Me.Load
'cria instância da classe acessoBD Dim oDados As New AcessoDB(strCon) 'define um dataset Dim ds As New DataSet 'obtem o dataset passando o nome da Stored Procedure, o parametro e o valor do parametero (codigo do cliente=ALFKI) ds = oDados.retornaDataSet( "CustOrderHist", "CustOrderHist", New SqlParameter("@CustomerID", "ALFKI"))'se há dados preenche o datagridview If ds.Tables(0).Rows.Count > 0 Then DataGridView1.DataSource = ds.Tables(0) ElseMsgBox( "Não há dados para este criterio") End If End Sub |
Executando o projeto para a stored procedure CustOrderHist e o cliente ALFKI iremos obter:
![]() |
Note que a classe definida efetua o acesso ao banco de dados SQL Server e que eu não efetuei um tratamento de exceção nas mesmas. Deixo esta tarefa para você (dica: você pode apenas lançar a exceção (throw ex) ). Você pode criar mais métodos ou adaptar os métodos definidos ao seu projeto.
Pegue o projeto completo
aqui:
acessoDadosNet.zip
Aguardo você no próximo
artigo .NET...
José Carlos Macoratti