Fica fácil perceber que o DataSet é um Layer (camada) entre o Banco de dados e as páginas em ASP.NET e C# ou VB. No Delphi tinhamos o módulo com função semelhante. A diferença é que no ASP.NET criamos o DataSet e, para usa-lo, instanciamos a classe criando uma classe derivada. Vamos criar uma aplicação para vermos como isso acontece. No VS ou outra plataforma ASP.NET iniciamos em “Arquivo” => “new” e criamos a aplicação.

 

Figura 1
Derivado de uma Classe DataSet, um DataSet Tipado usa a informação contida em um arquivo (.xsd). Esse arquivo é um arquivo de esquema XML que permite gerar uma nova classe.
Toda a informação do esquema representado por tabelas , colunas, linhas , etc.. é gerada e compilada neste nova classe DataSet. Como esta nova classe é derivada da classe DataSet ela assuem toda a funcionalidade da classe DataSet.
Figura 2



Neste exemplo demos o nome de Dasettipado para a aplicação.
Usei um template em branco (empty) para a criação da aplicação.
href="http://orcajm1.dominiotemporario.com/imagens/iniciaaddnewitem.jpg">


Figura 3

Adicionamos um novo item e escolhemos o DataSet.

 


Figura 4

 

 

Este arquivo com extensão (.xsd) esta vazio, inicialmente. Demos uma identificação de  AtualizaAux.xsd

Figura 5

Um click na aplicação e adicionamos um novo item. Esse novo item é o Default.aspx que usaremos como a camada ASP.NET que, por sua vez, fara uso do DataSet.



Figura 6 – Abaixo detalharemos já que a figura está desfocada.

Inicialmente vamos inserir três tabelas no Dataset. Na ToolBox inserimos três Dataadapter(s). Para cada um usaremos um “Select” com os campos que deseja usar.

 

Figura 7

 

Para fazer uso da dataset iremos inserir um outro item (nosso template esta em branco) que será nosso “Default.aspx”. Inserimos oito Label(s), sete TextBox(s) e um GridView. Para essa demonstração os botões inseridos não serão usados pois fazem parte de um projeto maior. Poderia ter usado o Entity Framework. Entretanto optamos pelo DataSet que pode ser usado para criar novas tabelas em tempo de execução. Na aplicação principal iremos fazer uso desse dispositivo para personalizar os dados usados por cada cliente permitindo adapta-los à suas realidades.


Figura 8

 

 

Após inserir o novo item vamos fazer a conexão com o banco, selecionar (select) os campos a serem usados e, o mais importante, preencher o dataset com dados do banco paar usar após fechar a conexão. Não temos que nos preocupar em abrir e fechar a conexão. O DataSet Tipado encarrega-se dessas ações.
No evento “Page_Load” fazemos a verificação se já “carregamos” essa página para não repetir a conexão com o banco. A sguir os métodos inseridos no (.cs).
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Conectar();
}

}

public void Conectar()
{
try
{
string cmdselect = ("SELECT CompAux.*, ServicoAux.Servico FROM ServicoAux INNER
JOIN CompAux ON ServicoAux.ServicoID = CompAux.ServicoID");

SqlConnection cn = new SqlConnection("Data Source=xxxxxx.xxxxxx.com;Initial
Catalog=tecsanear2;Persist Security Info=True;User
ID=tecsanear2;Password=xxxxxxxx;MultipleActiveResultSets=True");
SqlCommand cmd = new SqlCommand(cmdselect, cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
AtualizaAux tds = new AtualizaAux();// Aqui tds é a instância de nossa classe criada quando
criamos o DataSet.xsd
da.Fill(tds, tds.DataTable1.TableName);// Ação mais importante. Preencher o DataSet, mais
precisamente toadas as tabelas inseridas
Em seguida preenchemos os TextBox(s) com os dados do primeiro registro da tabela “DataTabe1” inserida no DataSet.
this.txtServicoID.Text = Convert.ToString(tds.DataTable1[0].ServicoID);
this.txtInsumoID.Text = Convert.ToString(tds.DataTable1[0].InsumoID);
this.txtUnd.Text = (tds.DataTable1[0].Und);
this.txtQtdade.Text = Convert.ToString(tds.DataTable1[0].Qtdade);
this.txtPUnit.Text = Convert.ToString(tds.DataTable1[0].PunitInsum);
this.txtSubTot.Text = Convert.ToString(tds.DataTable1[0].Total);
this.txtEspeci.Text = (tds.DataTable1[0].Servico);

Como já inserimos um SQLDataSource na página e o ligamos ao GridView1...

GridView1.DataBind();
}
catch (ApplicationException ex)
{
lblResult.Text = ex.Message;// Label inserida na página para ser preenchida com a exceção
levantada, se houver.
}
}
O resultado é o preenchimento dos TextBox(s) e do GridView1.
O pulo do gato é o preenchimento do Dataset -> da.Fill(tds, tds.DataTable1.TableName);
Não há necessidade de definir qual registro estamos carregando conforme faziamos em outras versões do VS ou do C#. A plataforma VS2010 não aceita de outra forma
O importante aqui é ver como implementar um DataSet Tipado que facilita a manipulação dos dados de uma tabela qualquer aliado ao fato que no VS2010 algumas diferenças existem.
Impressionante o tamanho do arquivo gerado na criação do DataSet Tipado (AtualizaAux.Designer.cs)

 


Figura 9 – Com os TextBox(s) e o GridView preenchidos.
Aliado ao Entity FrameWork esse elemento facilita bastante a criação de aplicações mais parecidas com as aplicações DeskTop.

Aprofunde seus conhecimentos sobre este tema na comunidade ASP.Net

Aprofunde seus conhecimentos sobre este tema na comunidade ADO.Net

 

 

Exibições: 1241

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

Comentário de Sergio Ferreira em 13 maio 2011 às 15:14

Concordo com você Rafael. mesmo porque trabalhandom com o velho ADO, temos um ganho de performance incontestavel e relação ao E.F.

Se for fora do Framework4.0, nem me arrisco.

Comentário de João Castro em 13 maio 2011 às 14:38
Meu amigo Thiago

O projeto é muito mais complicado do que esta nesse post. Como a rotina faz parte de um projeto bem maior tentarei enquadrar essa rotina completa onde uso o EF, também, e colocarei para download para vc e outros que quiserem. Faz parte de uma sequência de cálculo em que acesso várias tabelas e atualiziso três tabelas. Quando pronto vc verá porque escolhi o Dataset Tipado. A razão maior foi que preciso criar tabelas em tempo de execução e teria que manipula-las através de um dataSet. Entretanto o novo EF 4.1 parece que nos permitirar criar as tabelas em um banco já existente. Na realidade não será usado o Code-first nem o Model-first e sim o database-first. Já vi um exemplo mas o mesmo cria o banco para inserir tabelas nesse banco. Na realidade a aplicação cria um Blog personalizado para cada usuário. Não deu para confirmar a criação das novas tabelas para cada blog ou se usa as já criadas. vamos torcer para que possamos criar, via código, novas tabelas num banco já existente mesmo porque muitas aplicações necessitam de tabelas temporárias.
Comentário de Guilherme Ferreira em 13 maio 2011 às 9:35
Depende do cenário, com certeza! Mas se puder optar, escolha o Entity Framework ou até o NHibernate ;)
Comentário de Thiago Lunardi em 13 maio 2011 às 9:30

Exatamente, Rafael.

Sem contar que ainda existem poucos bons Data Providers para bancos não SQL Server.

 

João, poderia publicar o projeto pronto para download, por gentileza?

Comentário de Rafael Anastácio em 13 maio 2011 às 8:42
Concordo com vocÊ Guilherme. Mas depende do "cenario"... se a aplicação for desenvolvida em qualquer Framework anterior o 4.0.. o E.F tá fora.....
Comentário de Michaell Dantas em 13 maio 2011 às 8:18
Muito bom, já usei muito o DataSet tipado....e ainda uso dependendo da necessidade !!Parabéns !!!
Comentário de Guilherme Ferreira em 13 maio 2011 às 7:39
Ótimo post, mas prefiro E.F

© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço