Datatable vs Dataset

votos
104

Actualmente uso una DataTable para obtener resultados de una base de datos que puedo usar en mi código.

Sin embargo, muchos ejemplos en la web muestran usando un DataSet en su lugar y accediendo a la (s) tabla (s) a través del método de colecciones.

¿Hay alguna ventaja, basada en el rendimiento o no, de utilizar DataSets o DataTables como método de almacenamiento para los resultados de SQL?

Publicado el 05/08/2008 a las 14:07
fuente por usuario
En otros idiomas...                            


7 respuestas

votos
6

en 1.x solía haber cosas que los DataTables no podían hacer con los DataSets (no recuerdo exactamente qué). Todo eso fue cambiado en 2.x. Creo que es por eso que muchos ejemplos aún usan DataSets. Las tablas de datos deben ser más rápidas ya que son más livianas. Si solo está tirando de un único conjunto de resultados, es su mejor opción entre los dos.

Respondida el 05/08/2008 a las 14:10
fuente por usuario

votos
82

Realmente depende del tipo de datos que traes de vuelta. Dado que un DataSet es (en efecto) solo una colección de objetos DataTable, puede devolver múltiples conjuntos distintos de datos en un solo objeto, y por lo tanto más manejable.

En lo que respecta al rendimiento, es más probable que obtenga ineficiencia de las consultas no optimizadas que de la elección "incorrecta" de la construcción .NET. Al menos, esa ha sido mi experiencia.

Respondida el 05/08/2008 a las 14:12
fuente por usuario

votos
5

Una característica del DataSet es que si puede llamar múltiples instrucciones de selección en sus procedimientos almacenados, el DataSet tendrá una DataTable para cada una.

Respondida el 05/08/2008 a las 14:15
fuente por usuario

votos
3

Hay algunas optimizaciones que puede usar al llenar un DataTable, como llamar a BeginLoadData (), insertar los datos y luego llamar a EndLoadData (). Esto desactiva algún comportamiento interno dentro de la DataTable, como el mantenimiento de índices, etc. Consulte este artículo para obtener más detalles.

Respondida el 14/09/2008 a las 03:55
fuente por usuario

votos
19

Una diferencia importante es que DataSets puede contener varias tablas y usted puede definir relaciones entre esas tablas.

Si solo devuelve un único conjunto de resultados, creo que una DataTable estaría más optimizada. Creo que tiene que haber una sobrecarga (concedida pequeña) para ofrecer la funcionalidad de un DataSet y hacer un seguimiento de múltiples DataTables.

Respondida el 14/09/2008 a las 04:07
fuente por usuario

votos
0

Cuando sólo se trata de una única mesa de todos modos, la mayor diferencia práctica que he encontrado es ese conjunto de datos tiene un método "HasChanges", pero DataTable no lo hace. Ambos tienen un "GetChanges" Sin embargo, para que pueda utilizar eso y prueba para nulo.

Respondida el 05/12/2016 a las 12:50
fuente por usuario

votos
0

Un objeto DataTable representa datos tabulares como en memoria, caché de tabla de filas, columnas y restricciones. El conjunto de datos consta de una colección de objetos DataTable que se pueden relacionar entre sí con objetos DataRelation.

Respondida el 30/08/2019 a las 03:45
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more