webForumDet fria alternativet

Hämta information från ett öppet RS.

ASP

8 svar · 208 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Frågan#1

Hej!

Man kan om man vill veta om en tabell uppfyller ett visst krav göra på följande sätt:

SQLStmt = "Select id FROM tabell Where id = '" & Request.Form("test") & "'"
SET RS = Connection.Execute(SQLStmt)

Och sedan
If RS.EOF Then
Else
End If

Men om man vill göra det med ett öppet recordset.

Gör man då så här?

If RSObj("id") = Request.Form("test") Then
Else
End If

Eller hur gör man?

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan dec. 19998 577 inlägg
#2

Kan du inte göra på samma sätt då?

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se

Medlem sedan dec. 19995 874 inlägg
#3

Hej!

Nej, jag vill inte behöva öppna stänga och så, emission sa att det är slöseri med kraft :)

Så jag vill alltså kolla i hela tabellkolumnen och någon post innehåller det värdet och gör det det så skall den utföra någonting, annars någonting annat.

Tack!

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan dec. 19996 721 inlägg
#4

Nä, vad jag sa var att det var onödigt att använda ett direkt, öppet recordset (alla recordset är öppna tills att man stänger dem). Du tjänar på att exekvera en SQL-fråga.

ADO har en find-metod och en seek-metod, men eftersom de inte riktigt fungerar med alla databaser är det dumt att fastna i användning av dem.

Medlem sedan feb. 20001 590 inlägg
#5

Eftersom all data du kommer åt ligger i recordsetet (inte i databasen), så måste du exekvera en ny fråga (om inte datan du söker finns i recordsetet).

Man skall ju sträva efter att stänga anslutningen så fort som möjligt.
Det behöver nödvändigtvis inte ta mycket mer kraft om du öppnar och stänger fler gånger efter varandra. det som tar kraft är tiden recordsetet är öppet (det kan finnas flera användare i kö)

Använd GetString för att hämta ett recordset, det är den snabbaste metoden. Tyvärr har den ett antal nackdelar när man skall formatera utdatan.
Med getString får man en hit, med vanliga recordset får man en hit per MoveNext. Kolla www.learn.asp och getstring

/T

------------------
Toonster

Medlem sedan dec. 19995 874 inlägg
#6

Saken är så här:

Låt oss säga att vi har en tabell:

id | namn

1 | Peter
2 | Abraham
3 | Wilhelmina

Sen så skall jag alltså kunna se om Request.Form("idnummer") är samma som något utav de som finns i databasen (mellan 1-3) i exemplet.

Men jag förstår därmed att det inte går, utan att stänga och köra en "vanlig" SQL fråga och därefter fortsätta med en If sats.

Ni får gärna förklara mer om getstring, vad man egentligen skall ha det till?
Eftersom man inte kommer åt databasen med det?

Tack

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan dec. 19996 721 inlägg
#7

Jo, det går att göra, men det ger med största sannolikhet sämre prestanda än två separata SQL-sökningar.

GetString kan vara användbart i det här fallet, även om det medför vissa andra problem.

Vad gör GetString? Jo, den hämtar ett helt recordset och lägger allt i en sträng. Mofsar den bara ihop allt? Nej, nej...man får själv bestämma hur rader och kolumner ska delas upp. Ett vanligt exempel, och en vanlig tillämpning är att skapa HTML-tabeller fort som ögat.

mTable=rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ") 
%>
<table><%=mTable%></table>

..spottar ut en tabell av hela recordset:et.

En annan tillämniing kan vara att populera listboxar etc. GetString ger då en prestandaökning, eftersom man slipper loopa över recordset:et.

[Redigerat av emission den 17 jun 2000]

Medlem sedan dec. 19995 874 inlägg
#8

Snabbare så här?

<%
response.write "<table>"
response.write rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
response.write "</table>" 
%>

;)

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

[Redigerat av Brimba den 17 jun 2000]

Medlem sedan dec. 19996 721 inlägg
#9

Visst. Bra att du är med Brimba! ;)

252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)