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:
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