Avatar billede aspnet Nybegynder
18. april 2006 - 13:16 Der er 9 kommentarer

SqlDataReader, start position

Jeg vil gerne bestemme position på hvor recorden skal starte.
Feks. i klassisk ASP kan man lave

RS.Move(request("c"))
Så springer den til bestemte position og derfra kan man så lave en do while løkke. Hvordan laver man sådan en med SqlDataReader?

Min kode ser sådan her ud:

Dim c As Integer
c = request("c")

Dim dr As SqlDataReader = myCommand.ExecuteReader()
While dr.Read
  Response.Write ("bla bla")
End While
   
dr.Close()
myConnection.Close()
Avatar billede arne_v Ekspert
18. april 2006 - 13:22 #1
det gør du ikke

det styrer du med en WHERE betingelse i din SQL
Avatar billede aspnet Nybegynder
18. april 2006 - 13:34 #2
Man kan da ikke styre det med WHERE betingelse, hvis man vil lave en paging.
Feks. lad os sige der er 200 rækker og jeg vil kun have 10 rækker der bliver vist på siden ad gangen.

PS: NEJ, jeg vil ikke bruge standard paging i datakontrol.
Avatar billede arne_v Ekspert
18. april 2006 - 13:37 #3
afhænger lidt af hvad din SQL dialekt understøtter af TOP og LIMIT funktionalitet

men en data reader er bare en stream du kan ikke hoppe i den
Avatar billede aspnet Nybegynder
18. april 2006 - 13:43 #4
Jeg kan godt lave:

Dim c1 As Integer
Dim c2 as Integer
c1 = ((request("c") * 10)-10)
c2 = 0

Dim dr As SqlDataReader = myCommand.ExecuteReader()
While dr.Read
  c2 = c2 + 1
  If c2 > c1 And c2 < c1+10 Then
    Response.Write ("bla bla")
  End If
End While

Det vil være meget bedre med en start cursor, når man betragter performance.
Avatar billede aspnet Nybegynder
18. april 2006 - 13:45 #5
Jeg bruger MSSQL Express 2005, så jeg kan ikke bruge LIMIT. TOP kan jeg ikke komme særlig langt med, da jeg ikke kan bestemme, hvor den skal starte.
Avatar billede arne_v Ekspert
18. april 2006 - 14:29 #6
hvis data ikke er store kan du overveje DataSet

der er et trick med TOP og sub queries hvor man godt kan
(men performance er sikkert ikke god)
Avatar billede aspnet Nybegynder
18. april 2006 - 14:58 #7
Dvs. der er INGEN funktionalitet i ASP.NET der minder om RS.Move(et-tal), uden at gå på kompromis med performance?
Avatar billede arne_v Ekspert
18. april 2006 - 16:35 #8
tror jeg ikke

jeg tror heller ikke at det der ADO kode performer godt

hvis du ikke har for mange brugere og de primaert pager fremad kunne
du evt. gemme din data reader i session og fortsaette med den hvis det vaelger fremad
Avatar billede arne_v Ekspert
19. juni 2006 - 01:31 #9
tid at få afsluttet her ?
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