ADO.NET 2.0 - Criando e usando um DataTableReader
O objeto DataTableReader apresenta o conteúdo de um DataTable ou DataSet na forma de um ou mais conjuntos de dados do tipo somente-leitura e somente-para-frente.
Quando você cria uma DataTableReader de um DataTable , o objeto DataTableReader resultante contém um conjunto de dados com os mesmos dados que o DataTable a partir do qual foi criado, exceto para qualquer linhas que tenham sido marcadas como deletadas. As colunas aparecem na mesma ordem que o DataTable original.
O DataTableReader pode conter múltiplos conjuntos de dados se ele for criado pela chamada do método CreateDataReader. Os registros estarão na mesma ordem que os DataTables na coleção Tables do DataSet.
As classes DataTable e DataSet possuem um método CreateDataReader que retorna o conteúdo de um DataTable ou o conteúdo da coleção das tabelas do objeto DataSet como do tipo somente-leitura, e somente-para-frente.
Na versão anterior ao utilizar o objeto DataReader você tinha não podia usar a conexão enquanto a leitura dos dados estivesse sendo feita, você tinha que fechar a conexão explicitamente após a leitura dos dados.
O objeto DataTableReader é similar ao objeto DataReader mas mantém os dados no estado desconectado. Ou seja podemos dizer que ele é um DataReader desconectado.
O objeto DataTableReader é mais leve se comparado com o DataTable ou DataSet e mesmo assim ele continua contendo a mesma estrutura do DataTable.
vejamos um exemplo de código que cria um DataTableReader usando o método CreateDataReader do objeto DataTable. Iremos acessar o a tabela Employees do banco de dados Northwind.mdb e exibir o nome e sobrenome dos funcionários em um ListBox.
- Crie um novo projeto no Visual Basic 2005 e chamando-o de ExDataTableReader.
No formulário padrão inclua um controle Button e um controle ListBox.
Na janela DataSource crie um datasource com o banco de dados Northwind.mdb. Após feita esta operação a aplicação deverá apresentar a seguinte estrutura:
Janela Data Source | Janela Solution Explorer |
No evento Click do botão de comando inclua o seguinte código :
Private
Sub Button1_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
'obtem a string de conexão da aplicação Dim con As String = My.Settings.NorthwindConnectionString
'cria um adapter Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(sql, con) 'cria um datatable Dim tabela As DataTable = New DataTable("Employees") 'preenche o datatable adapter.Fill(tabela) 'cria um DataTableReader a partir do DataTable Dim dtbReader As DataTableReader = tabela.CreateDataReader
ListBox1.Items.Add(dtbReader.GetValue(2).ToString + " " + dtbReader.GetValue(1).ToString) End While End Sub |
Executando o projeto teremos:
Pegue o código do projeto aqui :
Nota: Podemos retornar múltiplos
Dim connection As SqlConnection = New SqlConnection(connectionString) Try Dim str As String = String.Empty Dim ds As DataSet = New DataSet Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM Customers", connection) Dim adapter As SqlDataAdapter = New SqlDataAdapter(cmd) Dim dtCustomers As DataTable = New DataTable("Customers") adapter.Fill(dtCustomers) ds.Tables.Add(dtCustomers) adapter.SelectCommand = New SqlCommand("SELECT * FROM Orders", connection) adapter.Fill(ds, "Orders") Dim dtReader As DataTableReader = ds.CreateDataReader Try Do While dtReader.Read str = dtReader.GetValue(0).ToString End While Loop While dtReader.NextResult Finally CType(dtReader, IDisposable).Dispose() End Try Finally CType(connection, IDisposable).Dispose() End Try |
Até o próximo artigo...
referências:
- Creatind and Using a DataTableReader - http://msdn2.microsoft.com/en-us/library/ws7ad65f.aspx
José Carlos Macoratti