VB.NET 2005 -  Obtendo os provedores e as instâncias do SQL Server


 

O método GetDataSources do namespace System.Data.Common.SqlDataSourceEnumerator.Instance retorna uma objeto DataTable que possui uma linha para cada instância do SQL Server 2000 ou 2005 acessível. As colunas exibem as seguintes propriedades: ServerName, InstanceName, IsClustered e Version.

 

Da mesma forma o método GetFactoryClasses() de DbProviderFactories retorna um objeto DataTable contendo uma linha para cada provedor .NET de dados gerenciado instalado; as colunas exibe as propriedades para providers name, Description, InvariantName, AssemblyQualifiedName e SupportedClasses. (Provedores de terceiros não aparecem na tabela)

 

Nota: O arquivo machine.config contém um elemento para cada uma dos 4 namespaces dos provedores ADO.NET. Possuem também uma seção system.data que inclui estes provedores para DbProviderFactories. A classe GetFactoryClasses lê o arquivo machine.config para obter estas informações.

 

Vejamos a seguir um exemplo usando feito no Visual Basic 2005 Express Edition mostrando como obter estes valores.

 

Crie um novo projeto no VB 2005 chamado DataEnums; altere o nome do formulário de form1.vb para DataEnums.vb e neste formulário inclua dois componentes Label e dois controles DataGridView: dgvServers e dgvProviders

 

Declare os seguintes namespace usando a declaração imports:

Imports System.Data
Imports
System.Data.Sql
Imports
System.Data.Common

A seguir no evento Load do formulário inclua o seguinte código:

 

Private Sub frmDataEnums_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


'Obrem e carrega uma lista das instƒncias do SQL Server

Dim dtServers As DataTable = SqlDataSourceEnumerator.Instance.GetDataSources


With
dgvServers

   .DataSource = dtServers

   .AutoGenerateColumns = True

   .RowHeadersVisible = False

   .BorderStyle = BorderStyle.None

End With
 

'Obtém e carrega uma lista dos provedores de dados .NET instalados

Dim dtProviders As DataTable = DbProviderFactories.GetFactoryClasses()
 

With dgvProviders

   .DataSource = dtProviders

   .AutoGenerateColumns = True

   .RowHeadersVisible = False

   .BorderStyle = BorderStyle.None

End With

End Sub

 

Ao executar o projeto o resultado obtido é mostrado na figura abaixo:

 

 

Pegue o projeto completo aqui:  DataEnums.zip

 

É assim mesmo: direto e objetivo. É o VB .NET 2005 ...

 

Até o próximo artigo VB.NET 2005 ...
 


José Carlos Macoratti