Hämta poster utan recordset

ASP

19 svar · 286 visningar · startad av Ricki

Medlem sedan juni 2000373 inlägg
Trådstart#1

Tjena,
Jag undrar om det går att hämta poster från en databas utan att använda ett recordset. Typ såhär:

Conn.Execute "Select * From Tabell"

Hur gör jag sedan för att skriva ut alla poster som finns i tabellen?

Medlem sedan mars 2000263 inlägg
#2

menar du:
Dim rs
Set rs = conn.execute("select * from tabell")

Do Until rs.eof
response.write rs("fält") & "<br>"
rs.movenext
loop

Medlem sedan juni 2000373 inlägg
#3

Det där kommer inte att få, för connection objectet stöder inte EOF och movenext

Medlem sedan dec. 19998 577 inlägg
#4

Jodå, connectionobjektet stödjer visst movenext och EOF...

Medlem sedan maj 2000269 inlägg
#5

det gör det visst det, det blir automatiskt ett recordset när den känner av att det kommer något ur en databas.

Medlem sedan juni 2000373 inlägg
#6

Behöver man alldrig använda rcordsetobjektet då?

När ska det användas då?

Medlem sedan maj 2000269 inlägg
#7

recordset ska du bara använda när du ska hämta poster, aldrig annars.

Medlem sedan maj 2000175 inlägg
#8

Har för mig att jag läst någonstans om hur man sparar resultatet från eb databasfråga i en vanlig array... minns inte riktigt vart jag läste det :(

Jag hör av mig om jag hittar det.

Medlem sedan dec. 19998 577 inlägg
#9

Recordset behöver du inte använda när du hämtar poster...

Medlem sedan juni 200032 967 inlägg
#10

rymdknark: metoden heter getrows() och är kanonbra. ibland i alla fall.

vide: öhh, va :q

Medlem sedan dec. 19998 577 inlägg
#11

Man behöver inte initiera objektet Recordset för att hämta poster ur databasen...

Medlem sedan juni 200032 967 inlägg
#12

ok, vide, men vad är det du får tillbaka när du skriver set rs = conn.execute (blaha)?

ä de'nte ett recordset, månne? :q

Medlem sedan dec. 19996 721 inlägg
#13

Jo, visst är det det. Man måste ha ett recordset för att returnera raderna i sökningen.

Medlem sedan dec. 19998 577 inlägg
#14

Ni missförstår mig nog... visst, ett recordset skapas automatiskt genom att exekvera connetcionsobjektet med en SQLsats... via detta skapas ett recordset (Set RS = ...), men du behöver aldrig skapa det mauellt (Set Rec = server.createobject(ADODB.recordset)) för en hämtning av poster... :) Vi menar samma sak, fast med olika ord...

Medlem sedan maj 2000269 inlägg
#15

getrows?..

Medlem sedan juni 200032 967 inlägg
#16

genom att använda bengt = rs.getrows(), så får du en array som ser ut precis som ditt recordset. sen kan du lägga den i ett applicationobjekt om du vill, och bara snurra igenom arrayen för att visa olika dynamiska menyval, eller rubriker i en produktkatalog till exempel.

Medlem sedan maj 2000269 inlägg
#17

Men man måste fortfarande använda recordset för att kunna använda den.
Då är ju getrows ganska värdelös.

Medlem sedan juni 200032 967 inlägg
#18

danmagnus: visst måste du använda recordsetet för att fylla på med data, men när arrayen väl är skapad så kan du ju stänga recordsetet och bara läsa från arrayen.

Medlem sedan dec. 19996 721 inlägg
#19

Förstår inte varför man vill bli av med recordset:et....

Handlar det om serverresurser får man använda adUseClient, så att man kan stänga kopplingen till databasen, men fortsätta att använda recordset:et

Medlem sedan juni 200032 967 inlägg
#20

jag kan berätta varför jag gjort det:

i utgångspunkt hade vi vårt affärssystem på en sql server v6.5, och vi hade en hel mängd sql-frågor från vår e-handelslösning. många av dessa sql-frågor var samma, och syftade till att plocka fram en katalogstruktur för vårt produktsortiment (c:a 60000 artiklar). vi vill ju inte visa rubriker som inte har några artiklar i sig.

hur som helst: dessa frågor resulterade i processer som av outgrundlig anledning låste andra processer, typ rapportkörningar o.dyl.
då satte jag upp lite kod i application onstart som läser ut hela den aktuella katalogstrukturen till arrayer, med getrows(), som jag sedan sparade ner i application-objekt. när sedan någon av mina kollegor gjorde ändringar i strukturen, som påverkade katalogstrukturen, gjorde de också en uppdatering av application-objekten.

inte nog med att vi blev av med de låsande processerna, prestandan blev oerhört mycket bättre i systemet.

därför, emission, kan man vilja undvika att jobba med recordsets.

263 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)