Avatar billede oasen Nybegynder
15. januar 2003 - 07:54 Der er 7 kommentarer og
2 løsninger

Luk recordsæt og databaseforbindelse

Hvor vigtigt er det egentlig at lukke recordsættet og databaseforbindelsen, inden en redirect?

Er det godt nok bare at lukke disse på siden, der redirect'es til?
Avatar billede medions Nybegynder
15. januar 2003 - 07:59 #1
Set objRs = Nothing
objConn.Close
Set objConn = Nothing

//>Rune
Avatar billede medions Nybegynder
15. januar 2003 - 08:00 #2
Det er altid vigtigt at lukke sin DB connection! -Husk altid at gør det!

//>Rune
Avatar billede oasen Nybegynder
15. januar 2003 - 08:07 #3
Lad os sige jeg har en forbindelse, som jeg kalder "conn" og et recordsæt, jeg kalder "rs" på side 1.
Disse åbner jeg og redirect'er til side 2 uden at lukke dem inden.

På side 2 lukker jeg så:

Set rs = Nothing
conn.Close
Set conn = Nothing

Men er det den samme forbindelse, jeg lukker, som jeg åbner? Eller er der blevet skabt to forskellige recordsæt og databaseforbindelser på trods af, at de har samme navne?
Avatar billede i_know Nybegynder
15. januar 2003 - 08:41 #4
1) Det er vigtigt at frigive en ressource så snart du er færdig med den. Det gælder også recordsets og databaseforbindelser.
2) De variable du bruger på side1 findes ikke på side2 (selv om du anvender samme navne). Hvis du vil overføre dit recordset fra side1 til side2, kan du gemme det i en Session variabel. F.Eks: På side1: Set Session("mit_recordset")=rs og på side2: set rs=Session("mit_recordset")
Avatar billede oasen Nybegynder
15. januar 2003 - 09:18 #5
Nej, men hvad er så idéen i at lukke de omtalte variabler inden redirect, hvis de automatisk lukkes, når en ny side kaldes?

Så må det da være nok bare at lukke recordsættene og databaseforbindelsen, der er anvendt på en side, når siden er færdigafviklet...!?
Avatar billede i_know Nybegynder
15. januar 2003 - 09:54 #6
Det er vigtigt at lukke forbindelsen fordi den ikke bliver lukket selv om rs og conn dør. rs og conn forsvinder, men de ressourcer de optager bliver ikke frigivet (recordsettet og databasen bliver ikke lukket).
Hvis du bruger en Access database, kan du se det ved at lave en lille test. I mappen med databasen bliver der nemlig oprettet en databasenavn.ldb fil når databasen er i brug. Lav først din side med kode til at lukke recordset og database og kør siden - ldb filen oprettes og forsvinder med det samme igen. Fjern derefter den kode som lukker recordsettet og databasen og kør siden igen - ldb filen forsvinder ikke.
Avatar billede oasen Nybegynder
15. januar 2003 - 10:27 #7
Jo, det gør den faktisk, men hvorfor ved jeg ikke...
Avatar billede oasen Nybegynder
15. januar 2003 - 10:30 #8
Men jeg går ikke ud fra, at alle de almindelige variabler stadig ligger i hukommelsen, når en ny side hentes...
Derfor er det dog godt, som du siger, at få frigivet flest mulige resourcer.
Er der i øvrigt en nem måde at tømme alle variabler på, i stedet for:

var1 = ""
var2 = ""

Osv..

(ligesom Session.Abandon)
Avatar billede burningice Nybegynder
15. januar 2003 - 14:33 #9
Hvis det er et stort problem for dig kan du flytte til asp.net... .Net har noget der hedder Garbage Collection... der behøves man slet ikke at tænke over sådan noget med at tømme eller nedlægge variabler
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
Kurser inden for grundlæggende programmering

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