NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosNet : Sistemanoticias002
Quer receber novidades e e-books gratuitos?

Construindo um sistema de publicação de notícias – Parte II

Continuando a nossa séria, iremos destacar hoje os objetos de acesso a dados no .NetFramework.

Acessar dados na arquitetura .Net se tornou uma tarefa bem prática em relação as tecnologias anteriores. Hoje temos um modelo baseado no tipo de banco que será utilizado. Por exemplo: Para acessar o Access eu uso a classe System.Data.OleDb, para acessar o Sql Server eu uso a classe System.Data.SqlClient, para acessar o Oracle eu utilizo a classe System.Data.OracleClient, e para os demais tipos de bancos de dados eu posso utilizar a classe System.Data.Odbc.

O que podemos ganhar com isso?

Simples, primeiramente pela performance de acesso, onde a conexão é feita e desfeita rapidamente, pois, cada classe tem acesso direto a API do Windows, não necessitando a implementação de uma outra classe, como acontecia com a classe SqlOledb. Outro ponto que vale a pena ser citado, é que as classes são diferentes, porém, os objetos que fazem a interação com as fontes de dados possuem funções homogêneas. Assim, da mesma forma que faço uma listagem de uma tabela do SqlServer, eu também posso fazer no Oracle, mudando apenas a classe que implementa o banco de dados.

Vamos agora, entender os objetos que fazem a interação com a fonte de dados do Microsoft Access.

Objeto OleDbConnection

Este é o objeto que faz a conexão com a base de dados. Para criar uma instância desta classe você pode utilizar o seguinte código:

OleDbConnection conexao;

conexao=new OleDbConnection();

Para este objeto deve se passar a string de conexão como parâmetro, ou passar a string de conexão através de acesso a propriedade. Por Exemplo:

///Criando a string de conexão.

string strConexao;

strConexao="provider=Microsoft.Jet.Oledb.4.0;Data source=" + Server.MapPath("BaseDeDados/ControleDeNoticias.mdb");

///Passando a string de conexão por parâmetro.

OleDbConnection conexao;

conexao=new OleDbConnection(strConexao);

///Criando a string de conexão.

string strConexao;

strConexao="provider=Microsoft.Jet.Oledb.4.0;Data source=" + Server.MapPath("BaseDeDados/ControleDeNoticias.mdb");

///Passando a string de conexão por acesso a propriedade.

OleDbConnection conexao;

conexao=new OleDbConnection();

conexao.ConnectionString=strConexao;

Vamos criar agora uma página de acesso a dados para testar a nossa conexão com o banco de dados ControleDeNoticias.mdb.

No Visual Studio .Net, crie um novo webForm com o nome AcessoADados.Aspx.

Vá na Toolbox e insira os seguintes controles:

» 1 Label – lblResposta

» 1 Button – btnConectar – Text=Conectar

Dê um duplo clique no botão btnConectar para ele acionar o código.

Vá para o início do código e inclua o acesso a classe System.Data.OleDb. Faça de acordo com a figura abaixo:

Ok, agora você já pode utilizar os objetos da classe System.Data.OleDb

Mova o cursor de edição para o trecho de código do botão, como mostrado na figura abaixo:

O código para o evento click deste botão deve ser digitado como o código mostrado abaixo;

private void btnConectar_Click(object sender, System.EventArgs e)

            {

                  ///Criando a string de conexão.

                  string strConexao;

                  strConexao="provider=Microsoft.Jet.Oledb.4.0;Data source=" + Server.MapPath("BaseDeDados/ControleDeNoticias.mdb");

                  ///Passando a string de conexão por acesso a propriedade.

                  OleDbConnection conexao;

                  conexao=new OleDbConnection();

                  conexao.ConnectionString=strConexao;

                  conexao.Open();

                  ///exibindo a confirmação da conexão

                  lblResposta.Text="A conexão foi aberta!";

}

Vamos testar para ver se está funcionando. Antes devemos indicar que esta página é quem deve iniciar a aplicação. Clique com o botão direito do mouse sobre o arquivo AcessoADados.aspx.

Clique na opção Set As Start Page

Clique em Start para testar.

Clique no botão conectar para verificar se foi possível efetuar a conexão.

Veja que a conexão aconteceu. Será mesmo?

O texto indicado no label não indica que realmente houve a conexão, ele apenas nos informa que o código até aquele determinado trecho foi executado sem exceções.

Para termos certeza que a conexão ocorreu, teríamos que ter alguma propriedade relativa ao objeto de conexão.A propriedade State informa se o estado da conexão, para podermos visualizar, basta fazer uma pequena alteração no código anterior:

lblResposta.Text=conexao.State.ToString();

Usamos a função ToString() para retornar o estado através de uma string.

Teste novamente após alterar o código. O resultado é este:

Tempo de Conexão

Agora vamos fazer outro teste. Inclua mais um label em sua página e dê o nome de lblResposta2.

Altere o código de acordo com o código abaixo:

                  ///Obtendo o tempo da conexão

                  DateTime tConexao=DateTime.Now;

                  conexao.Open();

                  lblResposta.Text=tCon.Millisecond.ToString();

                  conexao.Close();

                  ///Obtendo o tempo da desconexão.

                  DateTime tDesconexao=DateTime.Now;

                  lblResposta2.Text=tDescon.Millisecond.ToString();

Explicando o código acima:

Utilizamos a classe Sytem.DateTime para medir o tempo em que o computador leva para abrir e fechar o banco de dados. O método Close() fecha o objeto de conexão.

Como isto é feito de forma muito rápida, optei medir por milisegundos, mas você pode tentar por outras medidas, como segundos, minutos ou horas. Este trecho é apenas para efeito de testes, ele ajuda muito na verificação de performance de acesso a dados.

Tratando exceções e limpando os objetos da memória

Agora, vamos alterar o código novamente, este sim será muito utilizado por nós, pois, tratas os possíveis erros na hora de conectar ao banco de dados..Veja o código completo do botão:

private void btnConectar_Click(object sender, System.EventArgs e)

            {

                  ///Criando a string de conexão.

                  string strConexao;

                  strConexao="provider=Microsoft.Jet.Oledb.4.0;Data source=" + Server.MapPath("BaseDeDados/ControleDeNoticias.mdb");

                  ///Passando a string de conexão por acesso a propriedade.

                  OleDbConnection conexao;

                  conexao=new OleDbConnection();

                  conexao.ConnectionString=strConexao;

                  ///Código a ser testado

                  try

                  {

                        conexao.Open();

                        lblResposta.Text=conexao.State.ToString();

                  }

                  catch(OleDbException erro)

                  {

                        ///Informa a mensagem de erro, caso tenha acontecido algum erro ao conectar.

                        lblResposta.Text="Ocorreu um erro com a seguinte mensagem: " + erro.Message;

                  }

                  finally

                  {

                        ///Garante a execução do trecho abaixo independende do erro que acontecer.

                        conexao.Close();

                 lblResposta2.Text=conexao.State.ToString();

                        conexao.Dispose();

                             }

Vamos simular uma exceção. Altere o nome do banco de dados para um nome que não exista: Veja como foi executado...

Repare que alterei a posição e o tamanho dos componentes para que a mensagem pudesse ser completamente mostrada.

A primeira mensagem é exibida no lblResposta, onde informa que houve um erro e logo após mostra a mensagem. No nosso sistema faremos diferente, pois, vamos além de informar que aconteceu um erro, vamos gravar este erro em um arquivo. Será uma espécie de Log de erros.

A segunda mensagem é exibida no lblResposta2, onde informa que a conexão está fechada. Isto nos garante que mesmo com o erro acontecido, o objeto de conexão se fechou. Assim não vamos ficar mantendo várias requisições de conexão no servidor.

Bom, aqui termina a nossa segunda parte. Faça mais testes se puder. Quanto melhor for o nosso código de conexão, melhor será o desempenho do nosso sistema.

Na terceira parte iremos começar a construir as páginas que farão parte do sistema, iremos desenvolver a camada de apresentação.

Para qualquer dúvida, mande um e-mail para lanodecastro@hotmail.com

Lano de Castro

1 Visão geral do .NET Framework e do CLR
1 Comunicação .NET e VB 6.0 (com Visual Studio.NET 2005) - Parte I
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 1
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 2
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 3
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 4
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 5
1 VB: Menu Principal, Menu PopUp e Arquivos Texto
Visual Studio
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control
1 Visual Web Developer - 2005 - Beta 2 - Introdução
1 ASP.NET 2.0 - Conhecendo o GridView
1 ASP.NET 2.0 - Utilizando o GridView e DetailsView
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control - Parte 2
1 ASP.NET 2.0 - Utilizando o XmlDataSource
1 Envio de e-mail através de formulário web
1 ADO.NET 2.0 - Conhecendo as novidades parte 1
1 Série Visual Source Safe - Parte 1
1 Série Visual Source Safe - Parte 3
1 URL Indexável – Reescrever URL de uma forma amigável
1 Permissão de Página Utilizando Web.Config
1 Usando public interface
1 Trabalhando com o componente TabContainer
1 Adicionando Menu no DataGridView
ASP.NET
1 Conhecendo o ambiente integrado do WebMatrix
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte I
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte II
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte III
1 Acessando um banco de dados facilmente com ADO.Net e Datagrid
1 Desvendando os segredos do Dataset- Parte I
1 Construindo um Sistema de Publicação de Notícias – Parte 1
1 Construindo um Sistema de Publicação de Notícias – Parte 2
1 Construindo um Sistema de Publicação de Notícias – Parte 3
1 Construindo um Sistema de Publicação de Notícias – Parte 4
1 Construindo um Sistema de Publicação de Notícias – Parte 5
1 Login com Perfil de Acesso
1 Guest Book com XML - Parte 1
1 Guest Book com XML - Parte 2
1 Agendando Datas no Calendário com XML
1 Filtrando e Organizando Dados com o Controle DataView
1 Lista de Dados com Subitens – Parte 1
1 Lista de Dados com Subitens – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 1
1 Trabalhando com Arquivos e Diretórios – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 3
1 Sistema de Enquetes baseado em WebServices – Parte 1
1 Sistema de Enquetes baseado em WebServices – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 3
1 Upload de Arquivos
1 Crie seu próprio código de verificação
1 Login e Senha com FormsAuthentication – Parte 1
1 Login e Senha com FormsAuthentication – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 4
1 Sistema de Enquetes baseado em WebServices – Parte 5
1 Sistema de Enquetes baseado em WebServices – Parte 6