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: PrincipalArtigosASP.NET › Capítulo 10 : 09
Quer receber novidades e e-books gratuitos?
« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
ASP.NET - CURSO COMPLETO
Autor: Júlio Battisti

Lição 089 - Capítulo 10 - O objeto DataSet

Os objetos SqlDataAdapter/OleDbDataAdapter, descritos no tópico anterior são utilizados para executar um comando SQL ou um Stored Procedure, em um banco de dados e retornar um ou mais conjuntos de dados. Precisamos de uma estrutura capaz de receber e manipular os dados retornados; esta estrutura é o objeto DataSet. O objeto DataSet é derivado da classe DataSet, do namespace System.Data.

O objeto DataAdapter executa um comando através de uma conexão e retorna os dados para um objeto DataSet. A conexão é desfeita, pois o objeto DataSet fornece as funcionalidades necessárias para acessarmos e manipularmos os dados, estando desconectados do servidor. Acessamos e alteramos os dados conforme necessário e depois as alterações efetuadas são sincronizadas com o servidor.

DataSet é, sem dúvida, o principal objeto do ADO.NET, assim como o objeto RecordSet é o principal objeto do ADO.

Um objeto DataSet é formado por uma coleção de objetos do tipo DataTable, os quais pertencem à coleção Tables. Para representar o relacionamento entre dois objetos do tipo DataTable, utilizamos um objeto do tipo DataRelation. Por exemplo, podemos criar um DataSet que contém duas tabelas: Pedidos e Clientes. A tabela Clientes relaciona-se com a tabela Pedidos, através de um relacionamento do tipo um para vários, ou seja, um cliente pode fazer vários pedidos. Podemos representar este relacionamento utilizando um objeto do tipo DataRelation.

Nota: Para maiores detalhes sobre o modelo relacional de dados e relacionamentos entre tabelas, consulte o Anexo II. Neste anexo também são descritos os conceitos de Chave primária, Chave Estrangeira, normalização e integridade de dados.

Podemos garantir a integridade dos dados através da definição de campos do tipo Chave Primária – utilizando o objeto UniqueConstraint; e da definição de Chaves Estrangeiras - utilizando o objeto ForeignKeyConstraint.

O objeto DataSet lê e grava dados e a estrutura dos dados no formato de documentos XML, os quais podem ser enviados pela Internet via protocolo HTTP, o que facilita a troca de informações com sistemas de outras empresas, sistemas estes também habilitados ao XML.

Na Tabela 10.11 temos uma descrição das principais propriedades da classe DataSet:

Propriedade Descrição
DataSetName Utilizada para definir ou retornar o nome do DataSet.
EnforceConstraints Pode ser utilizada para definir ou retornar um valor True ou False. Se o valor desta propriedade for True,as regras de integridade serão observadas em uma operação de atualização. Por exemplo, se alterarmos ocódigo do cliente em um pedido da tabela pedidos para 01010 e não existir o cliente com o código 01010 na  tabela Clientes, a operação não será realizada. Se o valor da propriedade EnforceConstraints for False, a operação descrita no nosso exemplo, será realizada sem que nenhuma verificação seja feita.
Relations Retorna uma coleção com todos os relacionamentos existentes entre as tabelas do DataSet.
Tables Retorna uma coleção com todas as tabelas do DataSet.

Tabela 10.11 Principais propriedades da classe DataSet.

Na Tabela 10.12 temos uma descrição dos principais métodos da classe DataSet:

Propriedade Descrição
AcceptChanges Torna definitivas todas as alterações feitas nas tabelas ou relacionamentos do DataSet, desde que o mesmo foi inicializado ou desde a última vez que o método AcceptChanges foi chamado.
Clear Remove todos os dados do DataSet, zerando todas as linhas de todas as tabelas.
Clone Faz uma cópia idêntica do DataSet, inclusive dos seus dados, para um outro objeto do tipo DataSet.
GetChanges Retorna um objeto do tipo DataSet, contendo todas as alterações que foram feitas desde a inicialização do DataSet original, ou desde a última chamada do método AcceptChanges.
HasChanges Retorna um valor do tipo Boleano. True indica que houve alterações nos dados do DataSet – adições, alterações ou exclusões. False indica que não houve alterações.

Tabela 10.12 Principais métodos da classe DataSet.

Neste momento já somos capazes de estabelecer uma conexão com o banco de dados, definir um objeto DataAdapter para executar um comando através da conexão estabelecida e preencher um objeto DataSet com os dados retornados. A próxima etapa exibir os dados obtidos. A exibição dos dados é a única coisa que o usuário vê, ao acessar a página. Existem maneiras variadas para exibir os dados em uma página ASP.NET. Neste capítulo estaremos utilizando o controle DataGrid. Em seguida apresentaremos um exemplo simples de conexão com um banco de dados do Microsoft Access. Neste exemplo vamos utilizar o controle DataGrid. Mais adiante, neste capítulo, iremos estudar este controle, em detalhes.

Nota: Também utilizaremos um objeto do tipo DataView que será detalhado mais adiante.

Vamos conectar com o banco de dados C:\Meus documentos\NorthWind.mdb. Definiremos um comando SQL que retorna os seguintes campos da tabela Clientes:

  • CódigoDoCliente
  • NomeDaEmpresa
  • Cidade
  • País

Na Listagem 10.4 temos o código para o exemplo proposto.

Listagem 10.4 – Um exemplo completo – chap10ex4.aspx.

<%@ Import Namespace="System.Data"  %>
<%@ Import  Namespace="System.Data.OleDb" %>
<html>
<script language="C#"  runat="server">
    protected void Page_Load(Object Src, EventArgs E ) 
   {
      // Crio uma conexão com o banco de dados  pubs localizado no servidor local.
      // Vamos acessar a instância  SERVIDOR\NETSDK.
      String DefineConexão=  "PROVIDER=MICROSOFT.JET.OLEDB.4.0;" +
                                       "DATA SOURCE=c:\\meus  documentos\\NorthWind.mdb";
      OleDbConnection  MinhaConexão = new OleDbConnection(DefineConexão);
            // Utilizamos um objeto  DataAdapter para executar um comando SQL,
            // o qual retorna todos os dados da  tabela "Clientes".
      OleDbDataAdapter MeuComando = new  OleDbDataAdapter("SELECT CódigoDoCliente," 
+ "NomeDaEmpresa, Cidade, País FROM  Clientes", MinhaConexão);
            // Criamos e preenchemos um objeto  DataSet.
            // Observe que não temos mais o  objeto Recordset,
            // como era de praxe com o ASP 3.0.
       DataSet ds = new DataSet();
            // Utilizo o método Fill do  objeto DataAdapter, para preencher
            // o objeto DataSet, com os dados  retornados pelo comando SQL.
            MeuComando.Fill(ds);
            // Conectamos um controle DataGrid  com o DataSet criado anteriormente. 
            // MinhaGrade é o id (nome) de um  controle do tipo
            // DataGrid que está na seção de  apresentação da página.
      DataView source = new  DataView(ds.Tables[0]);
      MinhaGrade.DataSource = source ;
      MinhaGrade.DataBind();
   }
</script>
<body>
   <%-- Exibe as informações do DataGrid no  corpo da página. --%>
   <h3><font face="Verdana">Clientes  da empresa North Wind!!!</font></h3>
   <ASP:DataGrid  id="MinhaGrade" runat="server"
       Width="700"
       BackColor="#ccccff" 
       BorderColor="black"
       ShowFooter="false" 
       CellPadding=3 
       CellSpacing="0"
      Font-Name="Verdana"
       Font-Size="8pt"
       HeaderStyle-BackColor="#aaaadd"
       MaintainState="false"
   />
</body>
</html>

Digite o código da Listagem 10.4 e salve o mesmo em um arquivo chamado chap10ex4.aspx, na pasta chap10, dentro da pasta wwwroot, conforme descrito no item: “Check List para acompanhar os exemplos deste livro”, no Capítulo 6.

Para acessar esta página utilize o seguinte endereço:

http://localhost/chap10/chap10ex4.aspx

você irá obter a página indicada na Figura 10.12.

Curso Completo de ASP.NET - Júlio Battisti
Figura 10.12 Exibindo dados do banco de dados NorthWind.mdb.

Comentários sobre o código do exemplo – Chap10Ex4.aspx.

  • A primeira coisa que fizemos foi importar os namespaces necessários – System.Data e System.Data.OleDb:
<%@  Import Namespace="System.Data" %>
<%@  Import Namespace="System.Data.OleDb" %>
  • Utilizamos o evento Load da página para executar os comandos que estabelecem a conexão com o banco de dados e retornam dados da tabela Clientes – Page_Load.
  • Para estabelecer uma conexão com o banco de dados NorthWind.mdb, utilizamos um objeto OleDbCommand. Para maiores detalhes sobre este objeto consulte o tópico respectivo, no início deste capítulo.
  • Uma vez definida a conexão, utilizamos um objeto OleDbDataAdapter, chamado MeuComando, para abrir a conexão e executar um comando SQL que retorna alguns campos da tabela Clientes:
  OleDbDataAdapter MeuComando = new  OleDbDataAdapter("SELECT CódigoDoCliente," +
  "NomeDaEmpresa,País,Cidade FROM  Clientes", MinhaConexão);

Conforme descrevemos anteriormente, podemos utilizar uma abordagem diferente: Primeiro criar um objeto OleDbCommand (1 e 2 a seguir), depois declaramos um objeto DataAdapter e passamos o objeto Command para a propriedade SelectCommand do objeto OleDbDataAdapter (3 e 4 a seguir):

1.         string TextoDoComando = "SELECT  CódigoDoCliente," +
      "NomeDaEmpresa,País,Cidade FROM  Clientes”;
2.         OleDbCommand  MeuComando = new leDbCommand(TextoDoComando,MinhaConexão);
3.         OleDbDataAdapter MeuDataAdapter = new  OleDbDataAdapter( );
4.         MeuDataAdapter.SelectCommand =  MeuComando;
  • O próximo passo é declarar um objeto do tipo DataSet, chamado ds, e utilizar o método Fill, do objeto OleDbDataAdapter, para preencher o objeto DataSet com os dados retornados a partir do banco de dados NorthWind:
DataSet ds = new DataSet();
      MeuDataAdapter.Fill(ds);

O nome do objeto DataSet é passado como parâmetro para o método Fill.

  • Na seqüência criamos um objeto do tipo DataView. A principal função de um objeto DataView é permitir a ligação de uma fonte de dados com um controle do tipo Web Form Controls, como é o caso do controle DataGrid. Um objeto DataView representa uma visão de uma tabela de um objeto DataSet. A visão representada pelo objeto DataView pode ser utilizada para pesquisar, ordenar, editar e navegar pelos registros da tabela. Na criação do objeto DataView, associamos o mesmo com a primeira tabela do objeto DataSet, isto é feito utilizando a coleção Tables do objeto DataSet. Observe que a primeira tabela da coleção possui índice zero (ds.Tables[0]), a segunda tabela da coleção possui índice um (ds.Tables{1}), e assim por diante.
DataView  source = new DataView(ds.Tables[0]);

Em seguida definimos a propriedade DataSource do controle DataGrid (MinhaGrade), como sendo igual ao objeto DataView recém criado:

MinhaGrade.DataSource  = source ;

O passo final é chamar o método DataBind do controle DataGrid:

MinhaGrade.DataBind();

Feito isso, o controle DataGrid, colocado na seção de apresentação da página, irá exibir os registros retornados, no formato de uma tabela. Observe que não precisamos iniciar um laço While para navegar por cada registro do objeto DataView. Também não precisamos utilizar um “monte” de comandos Response.Write para montar a página de saída, como fazíamos no ASP 3.0. Todo este trabalho é feito, automaticamente, pelo controle DataGrid.

Este exemplo salienta bem o poder e flexibilidade dos Web Server Controls, como é o caso do controle DataGrid.

Nota: Ainda neste capítulo estudaremos o objeto DataView e o controle DataGrid, em maiores detalhes.

  • A título de exemplo, vamos supor que você deseja exibir apenas os clientes da Alemanha. Para tal, basta alterar o comando SQL, da seguinte maneira:
  OleDbDataAdapter MeuComando = new  OleDbDataAdapter("SELECT CódigoDoCliente," 
  + "NomeDaEmpresa, Cidade, País FROM  Clientes where País=’Alemanha’", MinhaConexão);

Você obterá o resultado indicado na Figura 10.13.

Curso Completo de ASP.NET - Júlio Battisti
Figura 10.13 Exibindo os clientes da Alemanha.

« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2024 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI