Desenvolvimento - ASP. NET

ASP.NET - Armazenando objetos DataSet na sessão

Embora com ASP.NET muitas coisas tenham mudado, os conceitos básicos sobre os objetos implícitos permaneceram, veja neste artigo como armazenar um objeto DataSet na sessão.

por José Carlos Macoratti



Embora com ASP.NET muitas coisas tenham mudado, os conceitos básicos sobre os objetos implícitos permaneceram. Como neste artigo estaremos tratando do armazenamento de um objeto DataSet na sessão, será bom relembrar os conceitos básicos sobre o objeto Session.

Como você já deve saber o protocolo HTTP é um protocolo sem estado, ou seja, a cada requisição é tratada independentemente.

Então como você passa as informações entre as páginas?

Para manter os estado das informações geralmente usa-se cookies ou codificação do URL.

A única coisa que ASP ou ASP.NET oferece é um objeto que o programador usa para armazenar os dados entre as requisições feitas e o ASP/ASP.NET também garante que estas informações poderão ser recuperadas.

O objeto Session representa basicamente um visitante para sua aplicação. Ele mantém quaisquer informações que você armazena. As informações que você pode armazenar podem ser desde um valor numérico, um carrinho de compras ou um objeto Dataset.

O objeto Session armazena informações de uma sessão de usuário em particular. Esse objeto persiste para a sessão inteira e proporciona assim uma solução elegante para o problema comum da persistência do estado - quando você precisa controlar um usuárioo de uma página da Web para a seguinte.

O servidor Web cria automaticamente um objeto Session quando uma página é requisitada pelo usuário que ainda não tenha uma sessão. A sessão é destruída quando for abandonada ou quando expirar.

Sintaxe: Session|propriedade|metodo

A sintaxe para se definir uma variável dentro do objeto Session é a seguinte:

Session("nome_variavel") = variavel

Você pode então fazer referência ao valor da variável como segue:

MinhaVariavel = Session("nome_variavel")

Define também as variáveis para usuários individuais. É muito usado para armazenar valores informados em formulários, como o pedido de compras, informações cadastrais, etc..Exemplo:

<FORM> <P><INPUT VALUE=<%=Session("Nome")%>>Nome:</P> <P><INPUT VALUE=<%=Session("Endereço")%>Endereço:</P> </FORM>
Cria um formulário e solicita ao usuário que informe o seu Nome e endereço. Os dados serão armazenados nas variavéis Nome e Endereço.

Um objeto Session permanece válido até que:

  • A sessão esgote o seu tempo-limite (20 minutos de inatividade é o padrão )
  • A sessão é abandonada
  • O visitante deixe o Navegador
  • O servidor seja reiniciado

Com os conceitos delineados podemos partir para o que nos interessa: mostrar como armazenar um DataSet na sessão.

Vou usar o WebMatrix e criar duas páginas:

pagina1.aspx - Esta página irá efetuar a conexão com o banco de dados Northwind do SQL Server e criar um DataSet com os dados da tabela Funcionários em seguida irá armazenar o DataSet na sessão

pagina2.aspx - Esta página irá apenas recuperar o DataSet da sessão e exibir os dados em um DataGrid

Criando a primeira página: pagina1.aspx

A página pagina1.aspx contém o controle LinkLabel para redirecionar o visitante para a pagina2.aspx e o código que gera o DataSet e o armazena na sessão.

Inicie o WebMatrix e na janela - Add New file - Selecione:

  • Templates - (General)
  • ASP.NET Page
  • Location - D:\inetpub\wwwroot\ds1 (faça os ajustes para sua configuração)
  • FileName - pagina1.aspx
  • Language - Visual Basic . NET

O código HTML da página é obtido na guia HTML do WebMatrix e é dado abaixo:

<html>
<head>
<title>Página 1 - Armazenando um DataSet na sessão</title>
</head>
<body>
<form id="form1" runat="server">
<div align="center"><font face="Verdana" color="blue" size="4"><strong>Armazenando
um objeto DataSet na sessão.</strong></font> 
</div>
<hr />
<div align="left"><font face="Verdana" color="#0000a0" size="2"><strong>1- Ao 
carregar
esta página o DataSet com os dados da tabela Funcionários do banco de dados Northwind
do SQL Serverestará</strong></font><font face="Verdana" color="#0000a0" 
size="2"><strong> armazenado
na sessão. 
<p>
</p>
</strong></font>
</div>
<div align="left"><font face="Verdana" color="#0000a0" size="2"><strong>2- Clique
no link abaixo para visualiar os dados que serão extraidos deste DataSet</strong></font> 
</div>
<hr />
<div align="center"><strong><font face="Verdana" 
color="#0000a0"></font></strong>
</div>
<font color="#8080c0" size="4"> 
<div align="center">
<asp:LinkButton id="lblRedireciona" onclick="manda_bala" runat="server" Text="Ir para página 2" 
Font-Names="Verdana" Font-Size="Medium" Font-Bold="True" ForeColor="Red">Ir para página 
2</asp:LinkButton>
</div>
</font>
</form>
</body>
</html>

No código acima estou usando o controle LinkButton associando ao evento onClick a rotina manda_bala que irá redirecionar o visitante para a pagina pagina2.aspx. O resto é HTML... O código VB.NET da guia Code é o seguinte:

Sub Page_Load(Source as Object, E as EventArgs)

Dim conexao as string = "Integrated Security=SSPI;Persist Security Info=False;
Initial Catalog=TesteWind;Data Source=."
Dim SQL as string = "Select Nome, Cargo, País from Funcionários"

Dim conDB as New SQLConnection(conexao)
Dim ds as DataSet=New DataSet()

Dim Cmd as New SQLDataAdapter(SQL,conDB)
Cmd.Fill(ds,"Funcionarios")

Session("mDataSet") = ds

End Sub

Sub manda_bala(Source as Object, E as EventArgs)
response.Redirect ("pagina2.aspx")
End Sub

Neste código temos o seguinte:

1- Definição da string de conexão com o SQL Server e do comando SQL que irá selecionar os dados da tabela Funcionários

Dim conexao as string = "Integrated Security=SSPI;Persist Security Info=False;
Initial Catalog=TesteWind;Data Source=."
Dim SQL as string = "Select Nome, Cargo, País from Funcionários"

2- Criação e preenchimento do DataSet:

Dim Cmd as New SQLDataAdapter(SQL,conDB)
Cmd.Fill(ds,"Funcionarios")

3- Armazenamento do DataSet na sessão: Session("mDataSet") = ds

Criando a segunda página: pagina2.aspx

A pagina2.aspx contém apenas um controle DataGrid e o código que recupera o DataSet da sessão.

Inicie o WebMatrix e na janela - Add New file - Selecione:

  • Templates - (General)
  • ASP.NET Page
  • Location - D:\inetpub\wwwroot\ds1 (faça os ajustes para sua configuração)
  • FileName - pagina2.aspx
  • Language - Visual Basic . NET

O código HTML é dado abaixo:

<html>
<head>
<title>Página 2 - Usando o DataSet da sessão</title>
</head>
<body>
<form id="form1" runat="server">
<div align="center"><b><i></i></b>
</div>
<div align="center"><font color="blue"><font face="Verdana"><b>Tabela de 
Funcionários</b></font> </font>
</div>
<div align="center">
<asp:Datagrid id="mDataGrid" runat="server" Height="196px" Width="522px" Font-Names="Arial" 
BorderWidth="1px" Border>

Clicando a segui no link: Ir para pagina 2, teremos o resultado da execução da pagina2.aspx.

Pegue aqui os scripts das duas páginas: aspndss.zip

Até o próximo artigo ASP.NET ...

José Carlos Macoratti

José Carlos Macoratti