 ASP.NET - Usando um 
DataTable sem um DataSet
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:
 Então pegue em : www.asp.net
  
  Então pegue em : www.asp.net
   
 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
 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