![]() |
Neste artigo vou recordar como podemos acessar um banco de dados de forma genérica usando a linguagem VB .NET. |
![]() |
O modelo de provedor esta baseado em um série de classes base no namespace System.Data.Comom. A classe DBProviderFactories permite a realização de dois tipos de tarefas:
Eles retornam um tipo de classe abstrata do tipo DBConnection. As classes de provider factory são derivadas de uma classe base abstrata : System.Data.Common.DbProviderFactory , e , para cada tipo de base de dados a ser acessado temos uma nova classe derivada desta classe base abstrata.
Desde que o DbProviderFactory apropriado foi criado a função na tabela acima pode ser usada para criar o objeto apropriado ao invés de usar o operador New como anteriormente.(Para determinar todas as classes DbProviderFactory disponíveis e criar suas classes adicionais é fornecido a classe System.Data.Common.DbProviderFactories)
Cada provedor de dados faz o registro de uma classe ProviderFactory no arquivo machine.config da plataforma .NET.
A classe base DbProviderFactory e a classe ProviderFactories podem retornar um DataTable de informações sobre os diferentes provedores registrados no arquivo machine.config e podem recuperar a ProviderFactory conforme a sequência do provedor fornecida ou um DataRow de um DataTable.
Neste artigo vou mostrar como realizar as duas tarefas: obter a lista dos provedores e acessar os banco de dados SQL Server e o MySQL.
Para acessar cada banco de dados precisamos definir as seguintes configurações:
1- SQL Server
string de conexão - "Data Source=MACORATTI;Initial Catalog=Northwind;Integrated Security=True"
nome do provedor - "System.Data.SqlClient"
string sql de consulta para acesso a tabela - "Select * from Customers"
2- MySQL
string de conexão - "server=localhost;user id=root;password=??????;database=cadastro"
nome do provedor - "MySql.Data.MySqlClient"
string sql de consulta para acesso a tabela - "Select * from alunos"
Estou fazendo o acesso local e por esse motivo preciso ter instalado os dois bancos de dados.
Recursos Usados:
Criando o projeto no VS Community 2017
Abra no VS community 2017 e no menu File clique em New Project;
A seguir selecione o template Visual Basic -> Windows -> Windows Forms Application e informe o nome Vbn_DBTexto e clique em OK;
Agora abra o formulário Form1.vb e inclua os seguintes controles no formulário:
2 Buttons - btnAcessarBD e btnExibirProvedores
2 RadioButtons - rdbSQLServer e rdbMySQL
1 ListBox - lbProvedores
1 DataGridView - dgvDados
Disponha os controles conforme o leiaute da figura abaixo:
Definindo o código do formulário
Namespaces usados no formulário:
Imports System.Data.Common
Variáveis definidas no início do formulário:
Dim conexaoBD As String = ""
Dim provider As String = ""
Dim consultaSQL As String = ""
1- Código do botão de comando para exibir os provedores existentes
No evento btnExibirProvedores_Click Inclua o código que vai permitir exibir os provedores que você tem registrado na sua máquina local:
Private Sub btnExibirProvedores_Click(sender As Object, e As EventArgs) Handles btnExibirProvedores.Click
Dim factory As DbProviderFactory = Nothing
Dim dtFactories As DataTable = DbProviderFactories.GetFactoryClasses()
Dim vetor As ArrayList = New ArrayList
Dim i As Integer = 0
For Each drFactory As DataRow In dtFactories.Rows
Try
factory = DbProviderFactories.GetFactory(drFactory)
vetor.Add(factory)
lbProvedores.Items.Add(vetor(i))
i = i + 1
Catch ex As Exception
factory = Nothing
End Try
Next
End Sub
|
O código acima usa o método estático DbProviderFactories.GetFactoryClasses() para retornar um DataTable contendo os provedores registrados.
2- Código do botão para acessar o SQL Server e o MySQL de forma genérica
Este código verifica qual radiobutton foi selecionado para definir o provedor, a string de conexão e a consulta SQL usada.
A seguir obtém os provedores registrados e cria uma conexão usando o provider apropriado para a seguir criar um comando definir a consulta, abrir a conexão e ler os dados do banco de dados exibindo-os no DataGridView:
Private Sub btnAcessarBD_Click(sender As Object, e As EventArgs) Handles btnAcessarBD.Click
If rdbSQLServer.Checked Then
provider = "System.Data.SqlClient"
conexaoBD = "Data Source=MACORATTI;Initial Catalog=Northwind;Integrated Security=True"
consultaSQL = "Select * from Customers"
ElseIf rdbMySQL.Checked Then
provider = "MySql.Data.MySqlClient"
conexaoBD = "server=localhost;user id=root;password=gpxpst;database=cadastro"
consultaSQL = "Select * from alunos"
End If
Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(provider)
Dim cnn As DbConnection = factory.CreateConnection
cnn.ConnectionString = conexaoBD
Dim cmd As DbCommand = factory.CreateCommand
cmd.Connection = cnn
cmd.CommandText = consultaSQL
cmd.CommandType = CommandType.Text
cnn.Open()
Dim reader As DbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection) Dim info As DataTable = New DataTable info.Load(reader) reader.Close() dgvDados.DataSource = info End Sub |
Executando o projeto teremos o resultado a seguir:
Pegue o projeto completo aqui:
Vbn_DBTexto.zip
Eu sou a videira
verdadeira, e meu Pai é o lavrador.
Toda a vara em mim, que não dá fruto, a tira; e limpa toda aquela que dá fruto,
para que dê mais fruto.
João 15:1,2
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Lendo imagens em um banco de dados MySQL - Macoratti