ASP.NET - Usando um DataTable sem um DataSet


 

Você acha que dá para usar um DataTable sem criar um DataSet ou DataReader ?
 

Se você deseja apenas usar uma tabela de uma base de dados porque deveria criar um DataSet ou um DataReader para fazer o serviço ?

 

Neste artigo vou  mostrar como você pode usar uma tabela usando um DataTable sem ter que criar um DataSet.

 

Mas você pode estar se perguntando : Porque evitar criar um DataSet ?

 

Ora , um objeto DataSet irá consumir mais recursos de sua aplicação do que um simples DataTable. Só isto...

 

Usando apenas um DataTable você ganha em desempenho e em simplicidade de código. Esta convencido agora ???

 

Qual a mágica então ?

 

Chama-se sobrecarga (Overloading) de método , uma das características de uma linguagem orientada a objeto como o VB.NET.

 

Para saber mais sobre o assunto leia o artigo :
VB .NET - Primeiros passos - Conceitos - VI. Conceitos OOP para você : sobrecarga , sobreposição , classes abstratas e interfaces.

 

Vamos apenas criar um objeto DataTable usando um método sobrecarregado do método Fill do objeto OleDbDataAdapter.


A seguir temos alguns dos métodos sobrecarregados possíveis para o VB.NET:

 

Overloads Overrides Public Function Fill(DataSet) As Integer Implements IDataAdapter.Fill
Inclui ou atualiza linhas em um DataSet conforme aquelas linhas da fonte de dados usando o nome do DataSet e cria um DataTable chamada "Table"
Overloads Public Function Fill(DataTable) As Integer
Inclui ou atualiza linhas em um DataTable conforme as linhas da fonte de dados usando o nome do DataTable
Overloads Overridable Protected Function Fill(DataTable, IDataReader) As Integer
Inclui ou atualiza linhas em um DataTable conforme a fonte de dados usando os nomes especificados de um DataTable e de um IDataReader
Overloads Overridable Protected Function Fill(DataTable, IDbCommand, CommandBehavior) As Integer
Inclui ou atualiza linhas em um DataTable conforme a fonte de dados usando o nome de um DataTable, o comando SQL Select e o CommandBehavior
Overloads Overridable Protected Function Fill(DataSet, Integer, Integer, String, IDbCommand, CommandBehavior) As Integer
Inclui ou atualiza linhas em um intervalo definido no DataSet conforme a fonte de dados usando o nome do DataSet o nome das tabaelas, a string command e o commandbehavior

 

Para mostrar um exemplo prático vou criar uma página ASP.NET usando a linguagem VB.NET e o Web Matrix.

Para testar o exemplos você vai precisar do seguinte:

  1. Seu sistema operacional deve ser Windows 2000 ou XP .
  2. .NET Framework. Não tem !!!  Então pegue em : www.asp.net
  3. O IIS deverá estar instalado e configurado - ASP.NET - Instalando e Configurando o Internet Information Services - IIS

Se você não tem o IIS ou não quer usá-lo pode usar o WebMatrix , uma ferramenta da Microsoft que disponibiliza um Web Server para testes que é fácil de usar. Para baixar o WebMatrix clique no link :www.asp.net

1- Inicie o WebMatrix e crie uma página ASP.NET chamada useDataTable.aspx.

2- Na Aba Design arraste um componente DataGrid

3- Inclua o seguinte código na guia All.

<%@ Page Language="vb" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDB" %>

<script runat="server">

    Sub Page_Load(Source as Object, E as EventArgs)
      geraTabela()
      datagrid1.DataBind()
    End Sub
    
    Sub geraTabela()
    
      Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\teste\Northwind.mdb")
      Dim sqlText As String = "SELECT * FROM Categories"
      Dim cmd As New OleDbCommand(sqlText, conn)
    
       Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(cmd)
      Dim dtCategories As DataTable = New DataTable
      adapter.Fill(dtCategories)
     datagrid1.DataSource = dtCategories
    
  End Sub

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:DataGrid id="DataGrid1" runat="server" Width="487px" Height="223px"></asp:DataGrid>
    </form>
</body>
</html>

 

Vejamos os destaques do código:(Não esqueça de alterar a localização da base de dados)

 

1- No evento Load da página eu estou chamando a rotina geraTabela()

 

2- Na rotina geraTabela() temos:

 

- A criação da conexão OleDbConnection com o banco de dados Northwind.mdb

   Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\teste\Northwind.mdb")
- A definição do comando SQL que irá selecionas todos os registros da tabela Categories   
   Dim sqlText As String = "SELECT * FROM Categories"
- A criação do objeto Command
   Dim cmd As New OleDbCommand(sqlText, conn)

- A definição do objeto DataAdapter

Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(cmd)
- A criação do objeto DataTable
  Dim dtEmployees As DataTable = New DataTable
- O uso do método Fill usando o DataTable 
  adapter.Fill(dtEmployees)
- A vinculação do dataTable ao datagrid
  datagrid1.DataSource = dtEmployees

 

Executando o projeto no servidor do WebMatrix temos o resultado abaixo:

 

 

Pegue o projeto completo aqui: useDataTable.zip

 

O DataTable ganhou muitos recursos na versão 2.0 do ADO.NET; em breve estaremos falando sobre este assunto. Aguarde...

 

Até o próximo artigo ...


José Carlos Macoratti