Avatar billede pfp Nybegynder
08. juni 2002 - 11:12 Der er 10 kommentarer og
2 løsninger

Lukke samtlige recordsets?

Hej,

Jeg ved at man kan lukke et specifikt recorset ved skrive f.eks. rs.close

Men kan det ikke lade sig gøre at lukke alle åbne recordsets på en gang? Jeg har en hel del sider men de har ikke alle sammen ens recordset, så derfor kunne jeg godt tænke mig bare at lukke alle recordsets igennem f.eks. en includefil på alle sider. Kan det lade sig gøre?

/peter
Avatar billede sungdk Nybegynder
08. juni 2002 - 11:14 #1
Normalt lukker man sit recordset efter en, når man har haft gang i det. Altså det vil sige at du skal prøve at efter brug så bare lukke det, giver også en mere stabil hjemmeside.

Du skal også huske at lukke dns-forbindelsen, som også er vigtigt mht. sikkerhed.
Avatar billede pfp Nybegynder
08. juni 2002 - 11:22 #2
Ja det ved jeg godt at man kan og bør..ville bare høre om det andet kunne lad sig gøre, da det ville være en del nemmere i stedet for at jeg skal til at lukke alle mine recordsets manuelt på 50 sider.
Avatar billede sungdk Nybegynder
08. juni 2002 - 11:39 #3
ved det faktisk ikke...så vil ikke komme med noget helt vanvigtigt..PRØV :)
Avatar billede a1a1 Novice
08. juni 2002 - 12:19 #4
function openRs(ByRef tmpRs, ByVal strSQL)
set tmpRs = oConn.Execute(strSQL)
end function

funcion closeRs(ByRef tmpRs)
tmpRs.Close
end function

strSQL = "select * from tabel"
Call openRs(rs1,strsql)
strSQL = "select * from tabel2"
Call openRs(rs2,strsql)

Call closeRs(rs2)
Call closeRs(rs1)

var det såndan noget du tænkte på?
Avatar billede pfp Nybegynder
08. juni 2002 - 12:48 #5
Hej a1,

Nej desværre :-( Med dit eksempel skal man vel angive hvilke rs'er der er tale om. Jeg tænkte mere på om der var noget der ligner Session.Abandon som afslutter alle sessions på en gang.
Avatar billede a1a1 Novice
08. juni 2002 - 12:55 #6
Det er der ikke, så :o)

men du skal huske at lukke alle dine Rs (og set rs = nothing), og helst lige efter at du er færdig med det :)
Avatar billede tmceu Praktikant
08. juni 2002 - 17:25 #7
Hvis du ikke "gider" holde styr på hvad der er åbent og lukke dem ordentligt, som du skriver at du godt ved du burde, er der en meget nemmere løsning. Denne er at gøre ingenting, for dine recordsets lukkes aut. når siden er færdig med dem.

Dette er dog ikke den bedste fremgangsmåde ift. performance, da du ikke er helt sikker på, hvornår de bliver lukket. Nogle hævder endda, at du ikke kan være sikker på at de bliver lukket, læs eks. nedenstående:

http://www.4guysfromrolla.com/webtech/060999-2.shtml

Men en løsning kunne også være, at lave en "databaseclose" fil som en include i bunden af alle dine sider. Eks. noget i stil med dette:

If objRS1.State = 1 Then objRS1.Close
If objRS2.State = 1 Then objRS2.Close
....
If objConn1.State = 1 Then objConn1.Close
If objConn2.State = 1 Then objConn2.Close
....
Set objRS1 = Nothing
Set objRS2 = Nothing
.....

Checket på state sikrer dig mod runtime fejl, i de situationer hvor et givet recordset og/eller connection evt. ikke er åbent. Hvis du husker at smide alle dine recordsets og connections i include filen, vil de, der er åbne blive lukket.
Avatar billede pfp Nybegynder
08. juni 2002 - 18:33 #8
Hej tmceu,

Jeg har i forvejen noget i includefil jeg kalder Luk.asp, som jeg bruger på alle de sider hvor jeg har oprettet forbindelse til min database. Filen Luk.asp indeholder:

Conn.Close
Set Conn = Nothing

Er det nok?
Avatar billede tmceu Praktikant
08. juni 2002 - 19:47 #9
Som jeg forstår dit spørgsmål, er det ikke nok. Du skal i princippet putte alle de recordsets og connections du anvender, ned i filen. For at undgå en runtime fejl, hvis du eks. forsøger at lukke et recordset eller connection som ikke er åbnet på den aktuelle side, laver du et check på state og lukker kun hvis det er åbent. Set [something] = Nothing vil aldrig give en fejl, uanset om det er åbent eller ej.
Avatar billede pfp Nybegynder
08. juni 2002 - 19:52 #10
Okay tak for det. Jeg har en database som højest vil komme til at indeholde et par hundrede poster og min side min vil nok max. få 300 sidevisninger pr. dag. Betyder det så meget i den sammenhæng at jeg får lukket alle rs? Jeg lukker Conn igennem en include..
Avatar billede tmceu Praktikant
08. juni 2002 - 20:41 #11
Isoleret set, vælter det nok ikke noget som helst. Men ud fra "mange bække små..." har det selvfølgelig en betydning. Især hvis din side ligger på et webhotel med 100 andre som heller ikke lukker :-)
Avatar billede pfp Nybegynder
11. juni 2002 - 00:20 #12
Ok. Jeg takker for Jeres indlæg som alle vil blive taget til efterretning.
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