webForumDet fria alternativet

Stänga statement efter sida eller?

7 svar · 292 visningar · startad av tosses

tossesMedlem sedan aug. 2003190 inlägg
#1

Jag undrar hur man stänger efter man öppnat en prepared statement.
ex:

Stmt = Conn.prepareStatement("select * from bolagstyp");
ResultSet rslt1= Stmt.executeQuery();

while...........

Stmt = Conn.prepareStatement("select * from nåt annat");
ResultSet rslt2= Stmt.executeQuery();

while.............

Stmt = Conn.prepareStatement("select * from nåt igen");
ResultSet rslt3 = Stmt.executeQuery();

Vad måste jag stänga och hur och när?
t.ex Stmt.close ?????
eller rslt1.close eller ??

och var?? direkt efter while loopen eller ??

/Tack på förhand

ViktorMedlem sedan aug. 20021 752 inlägg
#2

Varför ska du stänga den?
Det finns ingen close funktion i preparedstatement.
Du kan stänga ett ResultSet själv om du vill och då anroppar du close funktionen host ditt ResultSet och det skulle väll passa bra att göra det när du är färdig med det? I ditt exempel skulle det antagligen vara efter varje while sats.

/Viktor

tossesMedlem sedan aug. 2003190 inlägg
#3

Vad händer ifall man inte stänger ett resultset ??

Öppnas flera trådar då eller ??:OO

spangoMedlem sedan juni 20008 205 inlägg
#4

Om du inte stänger det själv, stängs det när skräphanteraren tar hand om objektet.

tossesMedlem sedan aug. 2003190 inlägg
#5

Ursäkta att jag tjatar men blir scriptet långsammare då?

Jag använder ServletExec från NewAtlanta och den ger mig bara ett begränsat antal användare samtidigt (eller nåt).
Om jag inte stänger resultsets, kommer det att inverka på antalet som kan surfa till sidan samtidigt?

/Tack igen

spangoMedlem sedan juni 20008 205 inlägg
#6

Det beror på. Det är dock oftast bättre att stänga saker så fort de inte behövs, om inte annat för att man på det viset demonstrerar för andra kodare att man inte längre bryr sig om objekten.

sgtpepperMedlem sedan apr. 20007 588 inlägg
#7

Viktor skrev:

Det finns ingen close funktion i preparedstatement.

Jo, det gör det. Interfacet PreparedStatement ärver från interfacet Statement som innehåller en close-metod.

Stäng statement-objektet om du inte längre behöver det. När du anropar statement-objektets close-metod så stängs även resultset-objektet automatiskt.

LimeMedlem sedan sep. 2001961 inlägg
#8

Regel nummer 1 vid effektiv programmering: Kan du städa, städa.

Att lämna saker till GC'n är att ta ganska stora risker. Den körs när det finns tid. Om det inte finns tid så kan det ta länge att köra den. Om det är orefererat minne så tar det mycket längre tid att städa bort objekten om man inte har satt referenserna till null än när GC'n måste kolla om det finns någon som refererat till objektet.

/Lime

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