Datatable vs Dataset

stemmen
104

Ik gebruik nu een DataTable om de resultaten uit een database die ik kan gebruiken in mijn code te krijgen.

Echter, veel bijvoorbeeld op het web laten zien met behulp van een dataset in plaats daarvan en de toegang tot de tafel (s) door de collecties methode.

Is er enig voordeel qua prestaties of anderszins, van het gebruik van datasets of DataTables als opslagmethode voor SQL resultaten?

De vraag is gesteld op 05/08/2008 om 14:07
bron van user
In andere talen...                            


6 antwoorden

stemmen
82

Het hangt af van de aard van de gegevens die u terug te brengen. Aangezien een DataSet is (in feite) slechts een verzameling van DataTable objecten kunt u meerdere afzonderlijke sets gegevens terug in een enkele, en dus beter beheersbaar, object.

Prestatie-wise, heb je meer kans om inefficiëntie te krijgen van unoptimized vragen dan van de "verkeerde" keuze van .NET construct. Tenminste, dat is mijn ervaring.

antwoordde op 05/08/2008 om 14:12
bron van user

stemmen
19

Een belangrijk verschil is dat DataSets meerdere tabellen kan houden en u kunt de relaties tussen die tabellen te definiëren.

Als u alleen het terugsturen van een enkel resultaat set hoewel ik zou denken dat een DataTable zou worden geoptimaliseerd. Ik zou denken dat er moet een aantal overhead (small toegekend) om de functionaliteit eenData biedt wel en bijhouden van meerdere DataTables.

antwoordde op 14/09/2008 om 04:07
bron van user

stemmen
6

in 1.x er vroeger dingen DataTables niet kon doen, die DataSets kon (weet niet meer precies wat) zijn. Dat alles werd veranderd in 2.x. Mijn gok is dat is de reden waarom veel voorbeelden nog DataSets gebruiken. DataTables moet sneller zijn zoals ze zijn lichter. Als je alleen het trekken van een enkele resultset, zijn de beste keuze tussen de twee.

antwoordde op 05/08/2008 om 14:10
bron van user

stemmen
5

Een kenmerk van de DataSet is dat als je meerdere SELECT-instructies kunnen bellen in uw opgeslagen procedures, zal de DataSet één DataTable voor elk.

antwoordde op 05/08/2008 om 14:15
bron van user

stemmen
3

Er zijn een aantal optimalisaties die u kunt gebruiken bij het vullen van een DataTable, zoals bellen BeginLoadData (), het plaatsen van de gegevens, dan roepen EndLoadData (). Deze schakelt een aantal interne gedrag binnen de DataTable, zoals onderhoud van indexen, enz. Zie dit artikel voor meer informatie.

antwoordde op 14/09/2008 om 03:55
bron van user

stemmen
0

Als u alleen te maken met een enkele tafel toch, het grootste praktisch verschil ik heb gevonden is dat DataSet heeft een "HasChanges" methode, maar DataTable niet. Beide hebben een "GetChanges" echter, dus je kunt gebruiken en testen voor null.

antwoordde op 05/12/2016 om 15:50
bron van user

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