msdn25_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

Aplicações Multidatabase com .NET Framework 2.0

 

Você já precisou desenvolver uma aplicação que precisasse funcionar com diferentes bancos de dados (multidatabase)? Tenho certeza que a maioria dos desenvolvedores já sentiu essa necessidade.

No ADO.NET 1.x isso já era possível através do uso de interfaces, disponíveis para criação de objetos, mas ainda demandava algumas boas linhas de código. No ADO.NET 2.0 temos um grande conjunto de novas classes de acesso a dados, inclusive classes especializadas para factory de objetos, facilitando o desenvolvimento e ganhando produtividade nessa tarefa cada vez mais comum: criar aplicações multidatabase.

Este artigo tem a missão de mostrar como é feita a “fábrica de objetos” (factory), utilizada para tornar sua aplicação multidatabase. Vamos utilizar os bancos de dados SQL Server e Access para simular esse processo, onde ficará simples e clara sua aplicabilidade.

Configurando os Providers

A configuração das conexões é um processo que demonstra ser muito simples. Toda a configuração dos bancos de dados e providers que serão utilizados é feita no arquivo de configuração de sua aplicação (app.config ou web.config), de acordo com o tipo de aplicação que você está desenvolvendo.

Através das tags de configuração, é possível informar ao .NET Framework quais são os providers que serão usados pela aplicação e todas as informações necessárias para a conexão, tudo feito todo dinamicamente. Para demonstrar com mais praticidade esse processo, considere o código da Listagem 1, que mostra como conectar ao SQL Server (da forma tradicional).

 

[C#]

 

//importa o namespace necessário para abrir conexão com o SQL Server

using System.Data.SqlClient;

 

//instancia a classe de conexão

SqlConnection conn = new SqlConnection();

 

//configura a string de conexão

conn.ConnectionString = “Server=(servidor);User Id=usuario;Password=senha”;

 

//abre a conexão

conn.Open();

 

[VB.NET]

 

Imports System.Data.SqlClient

 

Dim conn as SqlConnection = new SqlConnection()

 

conn.ConnectionString = “Server=(servidor);User Id=usuario;Password=senha”

 

conn.Open()

 

Listagem 1. Código utilizado para abrir uma conexão com o SQL Server

Está claro no código que estamos tratando somente do banco de dados SQL Server, o que nos impediria de ter uma aplicação multidatabase. Cabe a pergunta: o que seria necessário para ter um único código que desse suporte para qualquer banco de dados? Se você respondeu “crie uma classe para cada banco de dados, dentro dela importe os namespaces específicos e utilize as classes específicas”, já devo adiantar que está errado. Se você respondeu “utilize as interfaces do ADO.NET e faça você mesmo o seu factory”, eu diria que você foi um dos desenvolvedores que sofreu usando fábrica de objetos do ADO.NET 1.x. Já que estamos falando do ADO.NET 2.0, então vou apresentar uma solução eficiente e elegante para resolver esse pequeno problema de múltiplos providers.

Um dos primeiros passos é alterar o arquivo de configuração (app.config / web.config) da aplicação, exatamente na sessão , como mostra a Listagem 2.

 

<configuration>

  <appSettings>

    <add key="bancoAtual" value="SqlServer|Access|Oracle"/>

  appSettings>

 

  <connectionStrings>

<add name="SqlServer" connectionString="Data Source=(local);Initial Catalog=seubanco;User Id=sa;password=;" providerName="System.Data.SqlClient">add>

 

<add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\banco.mdb" providerName="System.Data.OleDb">add>

 

<add name="Oracle" connectionString="Data Source=(local);Initial Catalog=seubanco;User Id=sa;password=;" providerName ="System.Data.OracleClient"/>

 

  connectionStrings>

 

configuration>

Listagem 2 . Inclusão das configurações necessárias para o uso de Factory

Nota: Para adicionar o arquivo de configuração em sua aplicação Windows Forms, clique com o botão direito no projeto, aponte para Add>New Item, selecione Application Configuration File na janela ...

Quer ler esse conteúdo completo? Tenha acesso completo