Conectar a aplicação com o SQL Server através da classe SqlClient

Para iniciar este tutorial, precisaremos criar uma solution em branco com duas pastas (Presentation e Data) e dois projetos, um web (para este exemplo criaremos um projeto vazio do tipo MVC) na pasta Presentation e outro do tipo Biblioteca de Classes na pasta Data.

Capturar
Estrutura do projeto

Começaremos pela criação de um arquivo master database file (.mdf) na camada Presentation, dentro da pasta App_Data.

Obs.: A pasta App_Data serve para guardar arquivos de banco de dados e só deve ser usada em desenvolvimento, uma vez que o Visual Studio possui uma instância do SQL Server ao ser instalado, economizando o desenvolvedor da instalação do SQL Server  Management Studio. O arquivo Banco criado pelo Visual Studio possui a maior parte dos recursos do SQL Server porém não o substitui.

Para isso, clicamos com o botão direito sobre a pasta, add, new item.

add mdf
Adicionado um novo item

Selecionamos então o item SQL Server Database e o nomeamos Banco.

mdf
Arquivo de Banco de Dados

Note que o arquivo é adicionado dentro da pasta e fica acessível com um duplo clique sobre o arquivo Banco.mdf.

server explorerAcessando o Banco pelo Visual Studio

Criaremos agora a classe de conexão no projeto CK.Tutorial.DAL. Clicando com o botão direito sobre o projeto e adicionando uma nova classe que daremos o nome de “Conexao”. Ao Final, teremos a seguinte estrutura:

est
Estrutura do projeto

A classe de conexão deve ser uma classe pública, abstrata e seus atributos só devem ser acessados pelas classes que a herdarem (recomendo a leitura do artigo sobre OO). Tais atributos serão criados com base na classe SqlClient.

O próximo passo é importar as classes do namespace System.Data.SqlClient e criar os métodos para abrir e fechar a conexão com o Banco de Dados.

classeconexao
classe de conexão

Para copiar a nossa Connection String clicamos com o botão direito sobre o arquivo Banco (pelo Server Explorer) e acessamos suas propriedades.

sql
Acessando as propriedades do banco de dados

Note do lado direito da tela que temos acesso às propriedades do Banco de dados.

conn
Propriedades do Banco de Dados

Após dar um duplo clique sobre a palavra Connection String, copiamos a cadeia de conexão. O objetivo é obter o caminho para acessar o Banco através da Connection String, que é a forma com a qual a aplicação irá se comunicar com o banco de dados.

A partir deste ponto temos três opções para realizar a conexão com a base de dados. A mais simples, porém menos eficiente é copiar a Connection String do arquivo Banco.mdf e inserir diretamente ao instanciar o método SqlConnection, colocando-a entre aspas e inserindo um “@” na frente.

colar
abrindo conexão com a base de dados

Esta forma não é a mais recomendada pois, em desenvolvimento, homologação e produção é bastante provável que o caminho para o banco de dados seja diferente e por isto teríamos o trabalho de alterar e compilar todo o código fonte do projeto a sempre que a Connection String for alterada. Para evitar tal trabalho, podemos editar o Web.config usando um simples editor pelo simples fato deste ser um arquivo xml.

Obs.: de forma resumida, o web.config, é um arquivo xml onde colocamos as informações de configuração da nossa aplicação, como cadeia de conexão, páginas para tratamento de erros, cultura etc.

Outra forma de realizar esta conexão é através da classe System.Configuration. Após abrir o arquivo Web.config localizado na camada Presentation com um duplo clique, adicionaremos a nossa Connection String antes do fechamento da tag configuration (</configuration>).

Basta abrir a tag <connectionStrings> e fechá-la (</connectionStrings>). Perceba que o Visual Studio nos auxilia na criação da mesma e para completá-la sem precisar escrevê-la até o final basta pressionar a tecla Tab.

 

Para adicionarmos nossa Connection String basta abrir a tag add (<add) e completá-la com a tecla Tab. Acrescentamos então a tag nome (name) e um caminho (connectionstring) à nossa cadeia de conexão. Daremos o nome de “tutorial” e colaremos a Connection String copiada anteriormente. Ao final, teremos um resultado similar ao abaixo:

connectionstring
Connection String completa

Caso note a existência de aspas dentro da Connection String (logo após a palavra AttachDbFilename), devemos retirar estas aspas, do contrário teremos problemas ao tentar conexão com o banco de dados.

Podemos adicionar mais de uma connection String ao nosso Web.config bastando, para cada uma, abrir a tag add e passar a nova cadeia de conexão, sempre com um nome (name) diferente.

Devemos agora adicionar a referência de System.Configuration localizada em Assemblies (clicar com o botão direito sobre referências no projeto CK.Tutorial.DAL e adicionar referência. Esta referência permitirá utilizar a Connection String pelo nome que demos a este dentro do arquivo Web.config.

configuration reference
Adicionando referência de System.Configuration

Note que a referência é adicionada no projeto CK.Tutorial.DAL:

rerere
Referência adicionada

Voltamos à classe Conexao e importamos a referência para a classe. Agora basta adicionarmos a Connection String utilizando a classe ConfigurationManager. O ConfigurationManager (System.Configuration.ConfigurationManager) é uma classe do .Net Framework que permite acessar os arquivos de configuração da aplicação. De forma resumida, o ConfigurationManager irá acessar o Web.config e obter a Connection String dentro da tag ConnectionStrings cujo nome é “tutorial”. A classe Conexao ficará conforme figura abaixo:

conexaocompleta
classe Conexao

Desta forma, sempre que a base de dados for alterada, ao invés de ter que abrir o código fonte e alterar a classe Conexao, basta alterar a Connection String dentro do arquivo Web.config, mantendo o mesmo nome.

Outra forma de realizar este acesso é informando a propriedade ProviderName dentro da Connection String.

1provider
ProviderName para SQL Server

Agora basta informar o nome da Connection String. Desta forma, não precisamos referenciar a classe System.Configuration no projeto CK.Tutorial.DAL.

2pro
Classe Conexao sem ConfigurationManager

Encontrou algum erro ou quer colaborar? Mande e-mail para cristian.kruger@live.com.

Deixe um comentário