Hoje eu vou escrever este artigo com o objetivo de te mostrar como trabalhar com ADO.NET de maneira fácil, modular e ao mesmo tempo inteligente. Existem vários livros e artigos mostrando como trabalhar com o ADO.NET para iniciantes, como por exemplo: o desenvolvedor cria a conexão pelo Wizard da ferramenta Visual Studio e a string de conexão fica localizada na página ASPX. 

Sinceramente, isto é horrível e quem faz esse tipo de conexão é porque está com preguiça de fazer o outro tipo ou então não tem todo entendimento. Era pra eu ter criado este artigo a muito tempo, mas devido os “a fazeres” acabou que não deu para criar. Veja o que foi utilizado para desenvolver este artigo.

Referência
- Ferramenta Visual Studio
- Linguagem C#
- Plataforma Web (e algumas partes podem ser usadas em desktop)
- ADO.NET
- String de conexão

Como eu desenvolvo software diariamente e para ter uma certa agilidade eu precisei criar alguns “frameworks" pessoais um que conecta em qualquer banco, um que gera criptografia, outro que gera relatórios em vários formatos e muito mais. Porque eu fiz isso? Para poder ter agilidade, não precisar criar tudo novamente e não ficar copiando e colando de um projeto para o outro.
Eu recomendo que você crie os seus próprios “frameworks” para te ajudar no dia a dia do desenvolvimento de software. O que você tem que se importar é com o cliente e como o software está chegando nele, isto é, foi atendido tudo que o cliente precisava com o software? Ele está fluído, rápido e intuitivo? Eu falei um pouco disso em outro artigo, segue o link:

Link:


ADO.NET

O ADO.NET é uma tecnologia criada pela Microsoft para acesso ao banco de dados, ou seja, capaz de fornecer objetos para acesso ao banco de dados. Se você precisa acessar o seu pequeno banco de dados para gerar um relatório, com certeza terá que usar o ADO.NET para se conectar, enviar a instrução SQL e jogar para algum objeto os resultados.

Ele tem suporte a uma variedade de banco de dados e objetos de dados. Existem objetos que depois de pegar os dados, ficam ainda conectados ao banco de dados, outros objetos já trabalham desconectados. A vantagem de estar desconectado é porque os dados podem ser mostrados sem consumir muita banda. A desvantagem é que esses dados retornados precisam ser filtrados, isso porque a memória do servidor é responsável por guardar todos os dados dentro do objeto. Trazer um trilhão de dados e guardar em memória não é uma boa prática; imagina 1 milhão de pessoas acessando cada uma um trilhão de dados no objeto de dados.

No ADO.NET nós temos o DataReader, um objeto que precisa estar conectado ao banco de dados. Temos também o DataTable e DataSet que são objetos que trabalham desconectados do banco de dados, isto é, os dados ficam em memória.

Não existe o objeto melhor ou pior, existe aquela que adequa ao seu eco-sistema tecnológico.

Acesso

Por padrão o ADO.NET provê acesso aos seguintes bancos de dados: SQL Server (System.Data.SqlClient), OLEDB (System.Data.OleDb), ODBC (System.Data.Odbc) e Oracle (System.Data.OracleClient).

Connection

Os objetos de conexão para cada um deles se dá em seguida:  SqlConnection, OleDbConnection, OdbcConnection e OracleConnection. Isso quer dizer que um desses comandos precisa ser utilizado para conectar o sistema ao banco de dados. Hoje em dia, essa dependência de sistema e banco de dados é cada vez maior. Sem banco de dados ou qualquer outro objeto que guarda dados seu sistema não é nada.

Comandos

Os comandos que precisam ser enviados ao banco de dados para utilização dos seguintes objetos: SqlCommand, OleDbCommand, OdbcCommand e OracleCommand). Você adiciona uma instrução como o INSERT e manda para o banco através de algum objeto Command.


Objetos de leitura


Outros objetos importantes são os de leitura de dados. Nós temos os seguintes: SqlDataReader, OleDbDataReader, OdbcDataReader e OracleDataReader. Note que só é mudado o início do objeto pois o resto segue o mesmo nome. Dentro de cada objeto desses existem as particularidades de cada um, não se esqueça disso. O nome é parecido por questão de facilidade.


Objetos adaptados


Os objetos adaptados são aqueles que não precisam ficar conectados a todo tempo, basta só conectar, buscar e desconectar. O objeto terá todos os registros necessários buscados. Veja: SqlDataAdapter, OleDbDataAdapter, OdbcDataAdapter e OracleDataAdapter. Todos esses adaptadores precisam preencher o objeto chamado DataSet e nele todos os valores ficarão em memória. Veja a figura 1.

Figura 1 - Mostrando os objetos e suas relações

Note que tudo começa do provedor de dados, que no nosso caso é o ADO.NET. Depois existe o objeto de conexão que se divide em pelo menos três outros objetos. Nesse caso, os outros três podem se conectar diretamente ao objeto Connection. Note que o objeto DataAdapter possui uma extensão que é o DataSet. Esse objeto já não precisa estar conectado.


Depois de enviar o comando e buscar os dados, ao invés de ir para o DataReader, passa para o DataAdapter e depois para o DataSet. Lembre-se também que as três linhas estão relacionadas em uma mesma direção, isto é, todos precisam se conectar ao banco de dados para executar alguma tarefa. O único que não precisa da conexão ou estar conectado é o DataSet, por isso que ele está fora do alinhamento.


Conectar


O que é preciso fazer para o sistema se conectar ao banco de dados? O primeiro passo é ter o banco de dados. O segundo é saber o nome do servidor, usuário, senha e nome do banco. Se isso é praticamente impossível buscar ou enviar comandos para o banco. Quando o desenvolvedor sabe que a conexão entre o site e o banco é segura, a string de conexão fica um pouco diferente da normal, mas depois falaremos disso.


Exemplo

Os exemplos que gosto de fazer são os que eu realmente uso no dia a dia programando software, dessa forma, o que será mostrado aqui é criado na mão, diferente do software criado pelo Wizard da ferramenta.

O primeiro passo do exemplo é referente ao banco de dados. Eu já tenho o banco de dados SQL Server instalado em minha máquina, isto é, instalado localmente ou na nuvem se você precisar. O meu servidor de banco de dados chama-se MAURICIOJUNE8F0\MSSQLSERVER_2012. Veja a figura 2.

Figura 2 - Nome do banco de dados criado


A figura 2 mostra o nome do banco de dados chamado BDTeste. Porque do BD? Apenas uma escolha pessoal que significa “Banco de Dados” Teste. Eu peguei as primeiras letras do nome. Mas você pode colocar o nome que quiser.

Depois do banco de dados criado, é necessário criar o projeto no Visual Studio. Eu criei um projeto do tipo WebApplication com ASP.NET Web Application e Web Forms. Veja a figura 3 e figura 4.

Figura 3 - Criando um novo projeto

Note que eu criei o projeto na linguagem Visual C# e escolhi a opção Web. Depois de dar o nome do projeto, cliquei no botão Ok que me mostra a segunda tela.

Figura 4 - Escolhendo o projeto do tipo Web Forms.


O projeto Web Forms é um pouco diferente dos outros projetos. É um projeto simples e ao mesmo tempo com template web. Depois de clicar Ok, o projeto é criado e o arquivo de configuração do projeto já vem com suas tags específicas. A figura 5 mostra todo o projeto e arquivos criados.


Figura 5 - Arquivos do projeto


O último arquivo é chamado de arquivo de configuração. Clique duas vezes no Web.config. Existe uma tag chamada que pode ser adicionada as strings de conexão com nomes específicos e dentro do C# pode ser pego usando a chave nome. O código 1 mostra essa tag.

  < connectionStrings >

    <add name="ConexaoSQLServerLocal" connectionString="Data Source=nome do servidor; User=user; Password=senha; Initial Catalog=nome do banco de dados"/>

  < / connectionStrings >

Código 1 - String de conexão


Dentro da tag < connectionStrings > você pode adicionar várias tags com as configurações necessárias. Isto quer dizer que o seu site ou sistema pode conectar em mais de servidor de banco de dados ao mesmo tempo. Por exemplo, eu posso adicionar um banco sql server local e um outro hospedado na nuvem. Ou posso adicionar um banco SQL Server e outro Oracle sem qualquer problema.

Vamos analisar toda tag dentro de < connectionStrings >.

É necessário abrir a tag add para iniciar o auto-complete da ferramenta. A propriedade name pode ser um nome qualquer que você pega dentro do código C#. Depois de uma propriedade, coloque sempre o valor entre aspas duplas. Nesse caso add name=“ConexaoSQLServerLocal”.

A próxima propriedade é a connectionString=“Data Source”. Essa tag também é importante pois nela nós temos todos os dados do servidor como o nome do servidor, nome do usuário, senha para se conectar e o nome do banco de dados que deseja conectar. A cada informação e valor, você precisa prestar atenção pois existe o sinal de igual e quando começar outra propriedade, deve-se colocar um ponto e vírgula. Você tem que prestar atenção para colocar o nome do servidor corretamente e o usuário deve ter permissão para acessar o banco de dados indicado na string.

name = Equivale ao nome que irá usar internamente ou dentro do código;

connectioString = Essa propriedade deve conter todos os dados para conectar-se ao banco de dados;


A primeira propriedade dentro da connectionString é o nome do servidor. Separado por ponto e vírgula a próxima propriedade é o User=usuario; que acessa o banco de dados, a próxima é o Password=senha; daquele usuário. Note que depois do igual não se usa aspas duplas. A última propriedade dentro da connectionString é a Initial Catalog=BDTeste responsável por indicar o nome do banco de dados, no nosso caso o BDTeste.

Depois de tudo definido e entendido, vamos passar para o código em C#. Veja o código 2.


using System.Data;

using System.Data.SqlClient;

protected void Page_Load(object sender, EventArgs e)

{

using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConexaoSQLServerLocal"].ToString()))

            {

                try

                {

                    connection.Open();

                }

                catch (Exception ex)

                {

                    throw ex;

                }

                finally

                {

                    connection.Close();

                }

            }

}

Código 2 - Escrevendo o código C# e abrindo a conexão.


Importe as classes System.Data e System.Data.SqlClient para ter acesso aos objetos estudados anteriormente. Dentro do método chamado Page_Load acessei o SqlConnection passando como parâmetro o nome a conexão criada no arquivo de configuração.

Para pegar a conexão pelo nome, basta usar o método ConnectionStrings. Veja o código 3.


System.Configuration.ConfigurationManager.ConnectionStrings["ConexaoSQLServerLocal"].ToString()

Código 3 - Pegando o pelo nome.


É necessário passar o valor dentro da SqlConnection (classe usada para conectar ao banco de dados do tipo SQL Server). Dentro do Try eu adicionei o nome da variável criada e chamei um método Open(). Se as informações do banco de dados estiverem corretas, o método open será executado sem qualquer problema. Caso aconteça um erro, a linha de código vai para o catch e no finalizar, a conexão é fechada com o Close().


Como tarefa de casa, faça o mesmo exemplo e teste se a conexão abriu normalmente. Espero que tenha gostado e qualquer dúvida, favor entrar em contato pelo site www.mauriciojunior.org.