Conteúdo do Curso
Introdução ao .NET com C#
Introdução ao .NET com C#
DataReader vs. DataSet
Na seção anterior, utilizamos o objeto MySqlDataReader
para ler dados do banco de dados.
Em teoria, o DataReader (ou MySqlDataReader
) não recupera todos os dados ao executar uma consulta. Em vez disso, ele obtém os dados de forma sequencial, ou seja, recupera uma linha por vez. Quando executamos o método Read(), ele recupera a próxima linha do banco de dados em tempo real.
Por isso, é necessário manter uma conexão ativa com o banco de dados durante a leitura dos dados. Isso também explica por que precisamos fechar o objeto DataReader após a leitura dos dados.
Por outro lado, existe outro método para recuperar dados, que é por meio de um DataAdapter. Um DataAdapter busca os dados relevantes no banco de dados e preenche um DataSet com os dados recuperados, basicamente criando uma cópia desses dados. Um DataSet é um tipo especial de classe para armazenar dados recuperados de um banco de dados SQL. Podemos acessar e visualizar facilmente os dados de um DataSet.
Embora ambos os métodos possam parecer quase iguais, DataReader e DataSet apresentam algumas diferenças significativas:
Uso de Memória e Armazenamento:
DataReader recupera dados do banco de dados um registro por vez e mantém a conexão aberta enquanto lê os dados. Ele não armazena os dados na memória. Isso resulta em uso mínimo de memória;
DataSet armazena os dados recuperados do banco de dados na memória dentro da aplicação.
Acessibilidade e Navegação:
DataReader fornece um fluxo rápido e somente para frente de dados. Permite acesso sequencial aos dados e não suporta acesso aleatório ou navegação. Uma vez que um registro é lido, ele não pode ser revisitado a menos que a consulta seja executada novamente;
DataSet permite iterar pelas linhas em qualquer ordem e modificar dados dentro do DataSet sem afetar os dados originais no banco de dados.
Acesso em Tempo Real vs. Acesso Desconectado:
DataReader fornece acesso em tempo real aos dados do banco de dados. Requer uma conexão ativa com o banco de dados durante a leitura dos dados, e a conexão permanece aberta até que todos os dados sejam lidos ou até que o DataReader seja explicitamente fechado;
DataSet fornece acesso desconectado aos dados. Uma vez que os dados são recuperados do banco de dados e armazenados no DataSet, a conexão com o banco pode ser fechada. Os dados ficam então disponíveis na aplicação e podem ser manipulados offline sem a necessidade de manter uma conexão com o banco de dados.
A partir das vantagens e desvantagens mencionadas acima, pode-se concluir que o DataReader é adequado para cenários onde o acesso somente para frente aos dados é suficiente, enquanto o DataSet é mais indicado para cenários onde se deseja minimizar o tempo de conexão e é necessário trabalhar com os dados de forma interativa.
1. Qual das seguintes afirmações sobre o DataReader é verdadeira?
2. O que o DataSet armazena na memória?
Obrigado pelo seu feedback!