webForumDet fria alternativet

Optimering: Visa db rad med poster...

ASPur ASP

14 svar · 249 visningar · startad av Lukaspojken

LukaspojkenMedlem sedan maj 20011 312 inlägg
#1

Så här lärde man sig på webstudio att man skulle göra:

Set RecSet = Server.CreateObject("ADODB.Recordset")

Visa = "SELECT * FROM forum WHERE msgID=" & msg
RecSet.Open Visa, Connect, 3, 3

Men jag vet att man kan göra på något bättre sätt också

Visa = "SELECT * FROM forum WHERE msgID=" & msg
Connect.Execute(Connect)

Men hur skriver jag ut posterna egentligen. Det är bara en rad jag ska ha i tabellen...och där det står Select *...blir det en optimering om man skriver fältnamnen där?

------------------
Alltid lär man sig något nytt varje dag...

LukaspojkenMedlem sedan maj 20011 312 inlägg
#2

Connect.Execute(Visa)

Ska det stå...

------------------
Alltid lär man sig något nytt varje dag...

@ndersMedlem sedan juni 200032 969 inlägg
#3

det borde t.o.m. stå

Visa = "SELECT * FROM forum WHERE msgID=" & msg
set RecSet = Connect.Execute(visa)

du skriver ut posterna på exakt samma sätt som du gör när du fyller ditt recordset med recset.open.

prestandafrågan kan jag inte ge något bra svar på. den lämnar vi så länge.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

LukaspojkenMedlem sedan maj 20011 312 inlägg
#4

Om jag hämtar data från en specifik rad och sen direkt efter det ska hämta från en annan. Måste jag stänga ner RecSet-objektet och skapa det igen med "Set Recset"?

------------------
Alltid lär man sig något nytt varje dag...

@ndersMedlem sedan juni 200032 969 inlägg
#5

du skall inte använda

Set RecSet = Server.CreateObject("ADODB.Recordset")

om du väljer att skapa recordsetet genom connectionobjektets executemetod (som jag gjorde ovan, som jag alltid gör).

det räcker alldeles utmärkt då med de två raderna kod jag slängde med (under förutsättning givetvis att ditt connectionobjekt är skapat).

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

@ndersMedlem sedan juni 200032 969 inlägg
#6

eller, öh, vad menar du med din andra fråga?

du kan givetvis återanvända ditt RecSet-objekt.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

LukaspojkenMedlem sedan maj 20011 312 inlägg
#7

Jag var lite otydlig där...ska försöka visa i ett exempel...

strSQL = "SELECT * FROM forum WHERE msgID=" & Msg
Set RecSet = Connect.Execute(strSQL)

RecSet.Close
Set RecSet = nothing

strSQL = "SELECT * FROM forum WHERE msgID=" & Msg2
Set RecSet = Connect.Execute(strSQL)

RecSet.Close
Set RecSet = nothing

Jag antar att jag inte behöver stänga ner RecSetet för att i sin tur skapa det igen i nästa hämtning...eller? Du nämnde nåt om återanvändning...ska jag bara ta bort set på andra hämntningen kanske?

------------------
Alltid lär man sig något nytt varje dag...

@ndersMedlem sedan juni 200032 969 inlägg
#8

nej, behåll set, men du behöver inte stänga och förstöra objektet innan du kör nästa fråga.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

LukaspojkenMedlem sedan maj 20011 312 inlägg
#9

När jag skriver ut inläggen till ett huvudinlägg skriver jag gör jag hämtningen så här:

Set RecSet = Server.CreateObject("ADODB.Recordset")

Visa = "SELECT * FROM forum WHERE Thread_ID=" & Mail & " ORDER BY Thread_ReplyOrder"
RecSet.Open Visa, Connect, 3, 3 

Do While Not RecSet.EOF 

response.write "<TD class=text2 width=" & RecSet("Thread_Level") & 0 & " nowrap> etc etc....:)

RecSet.MoveNext
Loop

Jag antar att jag ska använda mig av en array istället för det är en del response.write eller? Ser det annars bra ut?

------------------
Alltid lär man sig något nytt varje dag...

LukaspojkenMedlem sedan maj 20011 312 inlägg
#10

Märker att jag inte ens kan bygga upp de svenska meningarna korrekt...puh...:)

------------------
Alltid lär man sig något nytt varje dag...

@ndersMedlem sedan juni 200032 969 inlägg
#11

array istället för vadå :q

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

LukaspojkenMedlem sedan maj 20011 312 inlägg
#12

Att jag hämtar in alla värden in i en array så att jag kan stänga ner db-kopplingen så snabbt som möjligt...och använda mig av array-värdena när jag gör mina response-write rader...eller tänker jag helt fel?

------------------
Alltid lär man sig något nytt varje dag...

@ndersMedlem sedan juni 200032 969 inlägg
#13

tja, getrows() är ju smidigt att använda, så om du kör en getrows direkt så kan du ju stänga direkt. :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

LukaspojkenMedlem sedan maj 20011 312 inlägg
#14

Ska göra det tror jag...men annars såg hämtning bra ut eller...jättetack @nders...

------------------
Alltid lär man sig något nytt varje dag...

PatrikBMedlem sedan mars 20002 836 inlägg
#15

Nä, finns ett fel, om du inte ska lägga till nya poster med detta recordset.

Om du inte behöver lägga till poster utan bara hämta ut alla poster ska du inte använda dig av:

RecSet.Open Visa, Connect, 3, 3

Utan av:

RecSet.Open Visa, Connect, 3, 1

[r]
och behöver du inte räkna posterna så räcker denna öppning:

RecSet.Open Visa, Connect, 0, 1

fast det bästa är att skapa recsetet genom conn objektet och sedan hämta ut med getrows()

Visa = "SELECT * FROM forum WHERE msgID=" & msg
Set objRS = Connect.Execute(Visa)
If Not objRS.EOF Then
arrRecords = objRS.GetRows()
End If
Set objRS = Nothing

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

[Redigerat av PatrikB den 28 jun 2001]

127 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)