Kurssisisältö
.NET:n Perusteet C#:lla
.NET:n Perusteet C#:lla
Datareader vs Dataset
Edellisessä osiossa käytimme MySqlDataReader
-objektia tietojen lukemiseen tietokannasta.
Teoriassa DataReader (tai MySqlDataReader
) ei hae koko tietoa kerralla suoritettaessa kyselyä. Sen sijaan se hakee tietoja sekventiaalisesti, eli yhden rivin kerrallaan. Kun suoritamme Read()-metodin, se hakee seuraavan rivin tietokannasta reaaliaikaisesti.
Tämän vuoksi tarvitaan aktiivinen yhteys tietokantaan tietoja haettaessa. Tämä myös selittää, miksi DataReader-objekti täytyy sulkea tietojen hakemisen jälkeen.
Toisaalta on olemassa toinen tapa hakea tietoja, nimittäin DataAdapterin avulla. DataAdapter hakee tarvittavat tiedot tietokannasta ja täyttää DataSetin haetuilla tiedoilla, käytännössä tehden niistä kopion. DataSet on erityinen luokka SQL-tietokannasta haettujen tietojen tallentamiseen. DataSetistä voidaan helposti tarkastella ja käsitellä tietoja.
Vaikka molemmat menetelmät vaikuttavat lähes samanlaisilta, DataReaderilla ja DataSetillä on merkittäviä eroja:
Muistin käyttö ja tallennus:
DataReader hakee tietoja tietokannasta yksi tietue kerrallaan ja pitää yhteyden avoinna tietoja luettaessa. Se ei tallenna tietoja muistiin. Tämä johtaa minimaaliseen muistin käyttöön;
DataSet tallentaa tietokannasta haetut tiedot sovelluksen muistiin.
Saatavuus ja navigointi:
DataReader tarjoaa nopean, eteenpäin kulkevan tietovirran. Se mahdollistaa sekventiaalisen pääsyn tietoihin eikä tue satunnaista pääsyä tai navigointia. Kun tietue on luettu, siihen ei voi palata ellei kyselyä suoriteta uudelleen;
DataSet mahdollistaa rivien läpikäynnin missä tahansa järjestyksessä ja tietojen muokkaamisenDataSetissä vaikuttamatta alkuperäisiin tietoihin tietokannassa.
Reaaliaikainen vs. irrotettu yhteys:
DataReader tarjoaa reaaliaikaisen pääsyn tietoihin tietokannasta. Se vaatii aktiivisen yhteyden tietokantaan tietoja luettaessa, ja yhteys pysyy avoinna kunnes kaikki tiedot on luettu tai kunnes DataReader suljetaan erikseen;
DataSet tarjoaa irrotetun pääsyn tietoihin. Kun tiedot on haettu tietokannasta ja tallennettu DataSetiin, yhteys tietokantaan voidaan sulkea. Tiedot ovat tämän jälkeen käytettävissä sovelluksessa ja niitä voidaan käsitellä offline-tilassa ilman jatkuvaa yhteyttä tietokantaan.
Edellä mainittujen etujen ja haittojen perusteella voidaan päätellä, että DataReader soveltuu tilanteisiin, joissa eteenpäin suuntautuva tietojen luku riittää, kun taas DataSet on parempi vaihtoehto tilanteisiin, joissa halutaan minimoida yhteysaika ja työskennellä tietojen kanssa vuorovaikutteisesti.
1. Mikä seuraavista väittämistä DataReaderista on totta?
2. Mitä DataSet tallentaa muistiin?
Kiitos palautteestasi!