Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære DataReader kontra DataSet | Optimering af Databaseoperationer
Introduktion til .NET med C#
course content

Kursusindhold

Introduktion til .NET med C#

Introduktion til .NET med C#

1. Introduktion
2. Asynkron Programmering og Introduktion til Webtjenester
3. Introduktion til Databaser med .NET
4. CRUD-Operationer med MySQL
5. Optimering af Databaseoperationer

book
DataReader kontra DataSet

I det sidste afsnit brugte vi objektet MySqlDataReader til at læse data fra databasen.

I teorien henter DataReader (eller MySqlDataReader) ikke alle data, når vi udfører en forespørgsel. I stedet henter den data på en sekventiel måde, hvilket betyder, at den henter én række ad gangen. Når vi udfører metoden Read(), henter den næste række fra databasen i realtid.

Derfor kræves der en aktiv forbindelse til databasen, mens data hentes. Dette forklarer også, hvorfor vi skal lukke DataReader-objektet efter data er hentet.

På den anden side har vi en anden metode til at hente data, nemlig via en DataAdapter. En DataAdapter henter relevante data fra databasen og udfylder et DataSet med de hentede data, hvilket i bund og grund laver en kopi af disse data. Et DataSet er en særlig type klasse til lagring af data hentet fra en SQL database. Vi kan nemt tilgå og se data fra et DataSet.

Selvom begge metoder kan virke næsten ens, er der nogle væsentlige forskelle mellem DataReader og DataSet:

Hukommelsesforbrug og lagring:

  • DataReader henter data fra databasen én post ad gangen og holder forbindelsen åben, mens dataene læses. Den gemmer ikke dataene i hukommelsen. Dette resulterer i minimalt hukommelsesforbrug;

  • DataSet gemmer data hentet fra databasen i hukommelsen i applikationen.

Tilgængelighed og navigation:

  • DataReader giver en hurtig, fremadgående datastrøm. Den tillader sekventiel adgang til data og understøtter ikke tilfældig adgang eller navigation. Når en post er læst, kan den ikke genbesøges, medmindre forespørgslen udføres igen;

  • DataSet giver mulighed for at iterere gennem rækker i vilkårlig rækkefølge og ændre data inden for DataSet uden at påvirke de oprindelige data i databasen.

Realtids- vs. afbrudt adgang:

  • DataReader giver realtidsadgang til data fra databasen. Den kræver en aktiv forbindelse til databasen under læsning af data, og forbindelsen forbliver åben, indtil alle data er læst, eller indtil DataReader eksplicit lukkes;

  • DataSet giver afbrudt adgang til data. Når data er hentet fra databasen og gemt i DataSet, kan forbindelsen til databasen lukkes. Dataene er derefter tilgængelige i applikationen og kan manipuleres offline uden at opretholde en forbindelse til databasen.

Ud fra ovennævnte fordele og ulemper kan det konkluderes, at DataReader er egnet til scenarier, hvor fremadgående adgang til data er tilstrækkelig, mens DataSet er mere egnet til scenarier, hvor du ønsker at minimere forbindelsestiden og har behov for at arbejde interaktivt med data.

1. Hvilket af følgende udsagn om DataReader er sandt?

2. Hvad gemmer DataSet i hukommelsen?

question mark

Hvilket af følgende udsagn om DataReader er sandt?

Select the correct answer

question mark

Hvad gemmer DataSet i hukommelsen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

Introduktion til .NET med C#

Introduktion til .NET med C#

1. Introduktion
2. Asynkron Programmering og Introduktion til Webtjenester
3. Introduktion til Databaser med .NET
4. CRUD-Operationer med MySQL
5. Optimering af Databaseoperationer

book
DataReader kontra DataSet

I det sidste afsnit brugte vi objektet MySqlDataReader til at læse data fra databasen.

I teorien henter DataReader (eller MySqlDataReader) ikke alle data, når vi udfører en forespørgsel. I stedet henter den data på en sekventiel måde, hvilket betyder, at den henter én række ad gangen. Når vi udfører metoden Read(), henter den næste række fra databasen i realtid.

Derfor kræves der en aktiv forbindelse til databasen, mens data hentes. Dette forklarer også, hvorfor vi skal lukke DataReader-objektet efter data er hentet.

På den anden side har vi en anden metode til at hente data, nemlig via en DataAdapter. En DataAdapter henter relevante data fra databasen og udfylder et DataSet med de hentede data, hvilket i bund og grund laver en kopi af disse data. Et DataSet er en særlig type klasse til lagring af data hentet fra en SQL database. Vi kan nemt tilgå og se data fra et DataSet.

Selvom begge metoder kan virke næsten ens, er der nogle væsentlige forskelle mellem DataReader og DataSet:

Hukommelsesforbrug og lagring:

  • DataReader henter data fra databasen én post ad gangen og holder forbindelsen åben, mens dataene læses. Den gemmer ikke dataene i hukommelsen. Dette resulterer i minimalt hukommelsesforbrug;

  • DataSet gemmer data hentet fra databasen i hukommelsen i applikationen.

Tilgængelighed og navigation:

  • DataReader giver en hurtig, fremadgående datastrøm. Den tillader sekventiel adgang til data og understøtter ikke tilfældig adgang eller navigation. Når en post er læst, kan den ikke genbesøges, medmindre forespørgslen udføres igen;

  • DataSet giver mulighed for at iterere gennem rækker i vilkårlig rækkefølge og ændre data inden for DataSet uden at påvirke de oprindelige data i databasen.

Realtids- vs. afbrudt adgang:

  • DataReader giver realtidsadgang til data fra databasen. Den kræver en aktiv forbindelse til databasen under læsning af data, og forbindelsen forbliver åben, indtil alle data er læst, eller indtil DataReader eksplicit lukkes;

  • DataSet giver afbrudt adgang til data. Når data er hentet fra databasen og gemt i DataSet, kan forbindelsen til databasen lukkes. Dataene er derefter tilgængelige i applikationen og kan manipuleres offline uden at opretholde en forbindelse til databasen.

Ud fra ovennævnte fordele og ulemper kan det konkluderes, at DataReader er egnet til scenarier, hvor fremadgående adgang til data er tilstrækkelig, mens DataSet er mere egnet til scenarier, hvor du ønsker at minimere forbindelsestiden og har behov for at arbejde interaktivt med data.

1. Hvilket af følgende udsagn om DataReader er sandt?

2. Hvad gemmer DataSet i hukommelsen?

question mark

Hvilket af følgende udsagn om DataReader er sandt?

Select the correct answer

question mark

Hvad gemmer DataSet i hukommelsen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3
some-alt