webForumDet fria alternativet

Connection = Nothing elr ?

ASP

11 svar · 192 visningar · startad av jontas

Medlem sedan juni 200061 inlägg
Frågan#1

Vad är skillnaden på

Set connection = Nothing

och...

connection.close ?
När används respektive ?

Jag vet så mycket att det är till för att stänga öppna anslutningar.

N

Medlem sedan dec. 19998 577 inlägg
#2

med close så stänger du bara det aktiva objektets kopploing till databas (eller annat), med nothing så nollställer(?) du objektet helt...

------------------
Kom hem till mig...

Medlem sedan juni 200061 inlägg
#3

Hallå vide!

Så vilket är att föredra isf och vart lägger jag in "stängningen" i koden?

Som nedan elr?

Set Connection= bla bla
SQL = "select * from databas order by id"
Set RS = Databas.Execute(SQL)
Set Connection = Nothing

[Redigerat av jontas den 24 okt 2000]

Medlem sedan mars 20002 836 inlägg
#4

Hello,

först stänger man objektet (.Close) och sedan nollställer man det (=nothing)

cya,
PatrikB

------------------
'*********************
Response.Write("PatrikB")
Response.End
'*********************

Medlem sedan dec. 19995 874 inlägg
#5

Alltså summerer jag:

Set Connection= bla bla
SQL = "select * from databas order by id"
Set RS = Databas.Execute(SQL)
Connection.Close
Set Connection = Nothing

Lycka till!

------------------
Mvh
Patrik aka Brimba
Brimbas lille ställe

Medlem sedan aug. 2000431 inlägg
#6

Vad händer om jag inte nollställer?
Finns det chans för att servern krachar du eller?

------------------
Erki
http://www.tapiren.net - Din Community på Internet!!

Medlem sedan juni 200061 inlägg
#7

Vad jag har fattat så är det mycket viktigt att alltid stänga sina objekt efter att man har använt dem för att undvika överbelastning vilket i sin tur kan leda till tillgänglighetsproblem
för webbplatsen.

Och det vill vi ju inte ha :)

Medlem sedan dec. 19991 072 inlägg
#8

...Ja servern kraschar efter ett tag när den har tillräckligt många objektreferenser öppna.

Se till att både stänga och sätta till nothing, iaf till asp+ är släppt där stänger servern själv alla öppna referenser till objekt...

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

Medlem sedan dec. 19998 577 inlägg
#9

Vad jag har fattat så är det mycket viktigt att alltid stänga sina objekt efter att man har använt dem för att undvika överbelastning vilket i sin tur kan leda till tillgänglighetsproblem
för webbplatsen.

När sidan är färdigexekverad så skall servern stänga alla objekt (som inte lagt i en session eller application), detta betyder inte att du skall sluta stänga dina objekt, utan ta lär dom av detta:

JAg har märkt att många väljer att stänga sina objekt sist på sidan vilket oftast är slöseri med resurser. Om du t.ex skall hämta en hel post ur en databas, så skall du hämta ut dessa till lokala variabler så gör det direkt och stäng objekt direkt efter:

strSQL = "Select * from tblUSers where userid = " & request.form("userid")
Set rsUser = conObj.execute(strSQL)

strNamn = rsUser("namn")
strEmail = rsUser("email")

Set rsUser = Nothing
conObj.close
Set conObj = Nothing

...' fortsättning på sidan...

... För om det är en lång sida så kommer ju de objekten var öppna helt i onödan...

Men kom ihåg att det ALLTID är god sed att stänga sina objekt, även om ni skulle gjort det på slutet på sidan i alla fall...

Mvh, Vide

------------------
Kom hem till mig...

Medlem sedan mars 20002 836 inlägg
#10

Hello,

skulle vilja tillägga att om man hämtar fler recordsets så ska kan man stänga(connection objectet, .Close) mellan varje recset ... om de ej kommer exakt efter varandra. När man sedan hämtat båda (alla recset så stänger man och "förstör" connectionen objectet

tex:

...
Set objConn = Server.CreateObj....
objConn.Open ConnStr

Set recset = Server.CreateObj....
recset.Open strSQL, objConn

.......
kod, mer kod 
.......

recset.Close
objConn.Close

...
HTML kod, eller annan typ av kod
...

objConn.Open ConnStr
recset.Open strSQL2, objConn

...
kod, mer kod
...

recset.Close
Set recset = nothing

objConn.Close
Set objConn = nothing

Sorry ... vart nog lite mycket kod/text

cya,
PatrikB

------------------
'*********************
Response.Write("PatrikB")
Response.End
'*********************

[Redigerat av PatrikB den 27 okt 2000]

Medlem sedan aug. 2000431 inlägg
#11

Så det räcker inte med att skriva:

rs.close
conn.close?

jag testade med att göra så här:
rs.close
rs = nothing
conn.close
conn = nothing

men det fungerade inte!

Medlem sedan mars 20002 836 inlägg
#12

Hello,

framför conn = nothing eller rs = nothing måste du skriva - set

annars funkar det inte ....

cya,

------------------
'*********************
Response.Write("PatrikB")
Response.End
'*********************

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