Avatar billede dennisjuul Nybegynder
14. maj 2003 - 13:24 Der er 9 kommentarer og
1 løsning

DataSet vs. DataReader, hvilke fordele/ulemper ved hver af dem??

Hej!

Jeg er lige begyndt at rode med ADO.NET og sidder med en access-DB. Så vidt jeg har forstået kan man benytte sig af i hvert fald to forskellige klasser til at manipulere data med, når man skal kontakte sin DB. Nemlig: DataSet og DataReader, men hvilke fordele og ulemper er der forbundet med hver af de to???
Avatar billede burningice Nybegynder
14. maj 2003 - 13:41 #1
Dataset er en in-memory copy af din tabel/database, mens datareaderen er en forward-only reader der bruges til at løbe igennem dine records.

Der er fordele og ulemper ved dem begge, primært hastighed og kompleksitet. Hvor DataReader helt klart er den ultra-hurtigste, så kan man med DataSet lave mange sjove ting, så som arbejde med disconnected version af sin database :)
Avatar billede odegaard Nybegynder
14. maj 2003 - 15:53 #2
og ikke mindst tælle hvor mange rækker man har, og så iøvrigt bladre både frem og tilbage i dataset'et.
Brug altid datareader hvis du bare skal traske igennem en masse data række for række, og dataset hvis du skal mere end det.
Avatar billede cms Nybegynder
22. maj 2003 - 00:16 #3
Må jeg indskyde et tillægsspørgsmål, mens jeg har jeres opmærksomhed?
Kan man ikke med DataReader og MSSQL server udtrække post x til y fra sin SELECT forespørgsel?
Avatar billede burningice Nybegynder
22. maj 2003 - 00:26 #4
cms>> det kan du da vel for så vidt godt... men så skal du selv holde styr på hvornår du skal stoppe med at løbe din reader igennem.
Avatar billede odegaard Nybegynder
22. maj 2003 - 09:21 #5
Cyberfessor: Hvorfor skal du holde styr på det? Det gør SQL serveren da for dig? (du skal selvfølgelig holde styr på din query)
Select Top 10 * From Customers Order By CustomerID

De næste 10 rækker (11 til 20)
Select Top 10 * From  (Select Top 40 * from Customers Order by Customerid Desc) Order By CustomerID

De næste 10 rækker (21 til 30)
Select Top 10 * From  (Select Top 30 * from Customers Order by Customerid Desc) Order By CustomerID
Avatar billede odegaard Nybegynder
22. maj 2003 - 09:22 #6
skulle måske lige nævne at denne specielle måde at gøre det på, her har forudsat at der er 50 rækker der returneres.
Avatar billede burningice Nybegynder
22. maj 2003 - 10:01 #7
odegaard>> fordi at han formulerede sit spm som om at han ikke vil udskrive alt fra sin recordset... men jo, du har da ret, og hvis jeg ikke havde haft så travlt havde jeg da også skrevet at han nok burde overvejere at skrive sin query så han kun henter det han skal bruge
Avatar billede cms Nybegynder
22. maj 2003 - 10:14 #8
Okay, det ser spændende ud. Jeg leger lige lidt med det.
Der findes ikke andre måder at gøre det på med MSSQL? Hvis man nu fx ikke kender antallet af rækker, så skal man jo først lave en SELECT count(*) as @count og så køre:
select top 10 * from (select top (@count-@start) from....
Avatar billede cms Nybegynder
22. maj 2003 - 10:28 #9
Hmm... den er ikke glad for variable efter TOP. Ved I hvordan man løser det?
Den melder også om fejl ved den sidste order-sætning :/
Avatar billede dennisjuul Nybegynder
02. september 2003 - 14:14 #10
Takker for de mange kommentarer... (ingen svar)...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester