Porque usar un DataSet pudiendo emplear el DataReader?

24/01/2005 - 23:59 por Juan Pedro Gonzalez | Informe spam
Hola,

No entiendo muy bien porqeu todas las preguntas relacionadas con bases de
datos van orientadas al uso de los DataSets. Si alguien me puede explicar
porque se usan tanto lo agradecería.

Desde mi punto de vista... El DataSet es mas lento que el DataReader, y solo
por ese detalle el DataReader se suele convertir en mi primera opcion.
Ademas el DataReader va cargando una fila cada vez que se la pedimos, por lo
que emplea muchos menos recurso que un DataSet, lo que tambien me hace
inclinarme por el DataReader.

Teniendo en cuenta estos detalles se me ocurre que el DataSet puede ser de
utilidad cuando tenemos una mala conectividad y poemos sacrificar recursos
de la maquina.

En ocasiones el uso del DataReader puede ser mas complicado, ya que tenemos
que diseñar una consulta que resulte efectiva y rapida, ya que el DataReader
sólo nos permite emplear la conexion para el DataReader hasta que lo
cerremos, y solo podemos recorrerlo de forma secuencial hasta el final. El
DataSet al tener los datos en memoria nos permite recorrerlo en cualqueir
dirección. Aun asi con un buen diseño y planificacion podemos recorrer un
DataReader para cargar los datos de un ComboBox, ListBox, ListView, etc... y
de mas rapidamente que con el DataSet.

Puede existir alguna ocasion en la que nos salga mas rentable ocupar memoria
y poder recorrer una lista de resultados una y otra vez por algun motivo, en
cuyo caso el DataSet sería mas afortunado... Tambien nos puede venir bien el
DataSet si queremos descargar un poco la red, ya que el DataSet se
desconecta en cuanto ha recuperado los datos de la base de datos.

Otro motivo interesante, es que el DataReader no puede pasar los datos de la
respuesta a otro formulario ya que, como se ha mencionado, solo contendrá
una fila de todos los resultados (Lo que no impide que se pase la
referencia, pero por ejemplo en ASP con cambios de paginas esto no es
posible), aun asi deben ser consultas no muy extensas... Vamos, que no
podemos pasar todo el stock de un almacen como un dataset porque la cantidad
de datos que se va a generar pueden ser enormes.

Por otro lado nos puede interesar una conexion persistente, y segun tengo
entendido el DataSet cierra la conexion en cuanto ha recuperado los datos.

Quizas se podria seguir hablando de diferentes aplicaciones para cada uno, e
incluso cuando es mejor almacenar los datos en una base de datos local como
Access antes que emplear el DataSet para recoger gran cantidad de datos y
demas...

Pero ¿alguien me puede decir que ventaja le ve a cargar un Combo con un
dataset generado por una consulta sencilla?

Creo que aqui tiene mucho que ver DJMIAO, ya que los libros parecen estar
repletos de ejemplos con DataSets y mas DataSets, e incluso en las academias
y facultades parece que se le da una importancia increible al DataSet...
Incluso he oido rumores que dicen que los profesores aconsejan usar siempre
un DataSet, y que algunos libros hacen lo mismo. ¿Que ventaja tiene usar
siempre un DataSet? Personalmente en un mundo real le veo mas ventajas al
DataReader que al DataSet (Lo que no quita que a veces sea mejor recurir al
DataSet). Vamos, yo no me imagino los Pentium 350 con 128 Mb de RAM y
Windows 2000 Profesional o incluso Windows XP, trabajando con un CRM que se
trae toda la lista de contactos atraves de un DataSet... o un ERP trayendose
todos los pedidos del mes atraves de un DataSet.

Teruel existe! ...y el DataReader tambien!

Saludos
 

Leer las respuestas

#1 Morgan
25/01/2005 - 05:11 | Informe spam
Aqui hay una comparacion, aunque se ve que estas muy convencido, pero para
los que esten en la duda mejor que lo chequen y que decidan segun lo que
quieran implementar.

Best Practices for Using ADO.NET
http://msdn.microsoft.com/library/d...etbest.asp

Saludos ... Miguel Angel Martínez Morgan ... 8-)
[MS-MVP-VB]

"Juan Pedro Gonzalez" escribió en el mensaje
news:%231t%
Hola,

No entiendo muy bien porqeu todas las preguntas relacionadas con bases de
datos van orientadas al uso de los DataSets. Si alguien me puede explicar
porque se usan tanto lo agradecería.

Desde mi punto de vista... El DataSet es mas lento que el DataReader, y


solo
por ese detalle el DataReader se suele convertir en mi primera opcion.
Ademas el DataReader va cargando una fila cada vez que se la pedimos, por


lo
que emplea muchos menos recurso que un DataSet, lo que tambien me hace
inclinarme por el DataReader.

Teniendo en cuenta estos detalles se me ocurre que el DataSet puede ser de
utilidad cuando tenemos una mala conectividad y poemos sacrificar recursos
de la maquina.

En ocasiones el uso del DataReader puede ser mas complicado, ya que


tenemos
que diseñar una consulta que resulte efectiva y rapida, ya que el


DataReader
sólo nos permite emplear la conexion para el DataReader hasta que lo
cerremos, y solo podemos recorrerlo de forma secuencial hasta el final. El
DataSet al tener los datos en memoria nos permite recorrerlo en cualqueir
dirección. Aun asi con un buen diseño y planificacion podemos recorrer un
DataReader para cargar los datos de un ComboBox, ListBox, ListView, etc...


y
de mas rapidamente que con el DataSet.

Puede existir alguna ocasion en la que nos salga mas rentable ocupar


memoria
y poder recorrer una lista de resultados una y otra vez por algun motivo,


en
cuyo caso el DataSet sería mas afortunado... Tambien nos puede venir bien


el
DataSet si queremos descargar un poco la red, ya que el DataSet se
desconecta en cuanto ha recuperado los datos de la base de datos.

Otro motivo interesante, es que el DataReader no puede pasar los datos de


la
respuesta a otro formulario ya que, como se ha mencionado, solo contendrá
una fila de todos los resultados (Lo que no impide que se pase la
referencia, pero por ejemplo en ASP con cambios de paginas esto no es
posible), aun asi deben ser consultas no muy extensas... Vamos, que no
podemos pasar todo el stock de un almacen como un dataset porque la


cantidad
de datos que se va a generar pueden ser enormes.

Por otro lado nos puede interesar una conexion persistente, y segun tengo
entendido el DataSet cierra la conexion en cuanto ha recuperado los datos.

Quizas se podria seguir hablando de diferentes aplicaciones para cada uno,


e
incluso cuando es mejor almacenar los datos en una base de datos local


como
Access antes que emplear el DataSet para recoger gran cantidad de datos y
demas...

Pero ¿alguien me puede decir que ventaja le ve a cargar un Combo con un
dataset generado por una consulta sencilla?

Creo que aqui tiene mucho que ver DJMIAO, ya que los libros parecen estar
repletos de ejemplos con DataSets y mas DataSets, e incluso en las


academias
y facultades parece que se le da una importancia increible al DataSet...
Incluso he oido rumores que dicen que los profesores aconsejan usar


siempre
un DataSet, y que algunos libros hacen lo mismo. ¿Que ventaja tiene usar
siempre un DataSet? Personalmente en un mundo real le veo mas ventajas al
DataReader que al DataSet (Lo que no quita que a veces sea mejor recurir


al
DataSet). Vamos, yo no me imagino los Pentium 350 con 128 Mb de RAM y
Windows 2000 Profesional o incluso Windows XP, trabajando con un CRM que


se
trae toda la lista de contactos atraves de un DataSet... o un ERP


trayendose
todos los pedidos del mes atraves de un DataSet.

Teruel existe! ...y el DataReader tambien!

Saludos




Preguntas similares