webForumDet fria alternativet

Öppna och stänga databasen

ASP

3 svar · 634 visningar · startad av Bjarne A

Medlem sedan feb. 2001151 inlägg
Frågan#1

Jag försöker se till att databasen belastas så lite som möjligt då det är en Access databas, genom att öppna den en gång och hämta allt som behövs på sidan och lägga det i variabler och sedan stänga.

Men då jag hämtar från många olika rader blir det ju så många "connect"

Jag har 80 st rader jag hämtar från (kapat lite av koden för bättre synlighet)

Skall jag stänga RS:en och Connect mellan varje radanrop?

Är det kanske ett tokdumt sätt att hämta på?

<%
set connect = server.createobject("ADODB.connection")
connect.Open "DBQ=" & server.mappath("db.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}" 
%>

<%Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = " & sidnamn & " ") 

str_title = RS("ruta") & ""

bildval_ettan = RS("bildtyp_ettan") & ""
bildval_tvaan = RS("bildtyp_tvaan") & ""
bildval_trean = RS("bildtyp_trean") & ""
bildval_fyran = RS("bildtyp_fyran") & ""
bildval_femman = RS("bildtyp_femman") & ""
bildval_sexan = RS("bildtyp_sexan") & ""
bildval_sjuan = RS("bildtyp_sjuan") & ""
bildval_attan = RS("bildtyp_attan") & ""
bildval_nian = RS("bildtyp_nian") & ""
bildval_tian = RS("bildtyp_tian") & ""

str_meddelande_ettan = RS("meddelande_ettan") & ""
str_meddelande_tvaan = RS("meddelande_tvaan") & ""
str_meddelande_trean = RS("meddelande_trean") & ""
str_meddelande_fyran = RS("meddelande_fyran") & ""
str_meddelande_femman = RS("meddelande_femman") & ""
str_meddelande_sexan = RS("meddelande_sexan") & ""
str_meddelande_sjuan = RS("meddelande_sjuan") & ""
str_meddelande_attan = RS("meddelande_attan") & ""
str_meddelande_nian = RS("meddelande_nian") & ""
str_meddelande_tian = RS("meddelande_tian") & ""
str_meddelande_stor = RS("stor") & ""

str_form_rubrik = RS("form_rubrik") & ""
str_form_epost = RS("form_epost") & ""
str_form_amne = RS("form_amne") & ""

str_form_google_title = RS("google_title") & ""
str_form_google_key = RS("google_key") & ""
str_form_google_des = RS("google_des") & ""

str_i = RS("ruta") & ""

Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = " & 30 & " ")  
ruta30 = RS("ruta") & ""
boxen30 = RS("boxen")
IF boxen30 = "ja" THEN 
visa_toppmeny ="japp"
END IF

Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = " & 31 & " ")  
ruta31 = RS("ruta") & ""
ruta_i31 = ruta31
boxen31 = RS("boxen")
i31 = RS("google_title") & ""

Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = " & 32 & " ")  
ruta32 = RS("ruta") & ""
ruta_i32 =ruta32
boxen32 = RS("boxen")
i32 = RS("google_title") & ""

Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = " & 33 & " ")  
ruta33 = RS("ruta") & ""
ruta_i33 = ruta33
boxen33 = RS("boxen")
i33 = RS("google_title") & ""

Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = " & 34 & " ")  
ruta34 = RS("ruta") & ""
ruta_i34 = ruta34
boxen34 = RS("boxen")
i34 = RS("google_title") & ""

Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = " & 35 & " ")  
ruta35 = RS("ruta") & ""
ruta_i35 = ruta35
boxen35 = RS("boxen")
i35 = RS("google_title") & ""
%>

<%
RS.close
set RS = nothing
connect.Close
set connect = nothing
%>
Medlem sedan juni 200032 967 inlägg
#2

Njäe, öppnandet och stängandet av databas / recordset behöver du inte tänka så mycket på när det gäller den koden.

Däremot är det väldigt mycket annat i den koden som är riktigt, riktigt hemskt. Men det är något för en annan tråd antar jag. ;)

Mvh

Medlem sedan feb. 2001151 inlägg
#3

Något som är riktig riktigt hemskt.... det låter ju inte bra.... och vad skall rubriken i tåden vara då....

Dim kanske :OO

Medlem sedan juni 200032 967 inlägg
#4

Nja, rubriken kan man låta vara orörd, men jag tänkte mest att det var connection och recordset du undrade över, då låter jag det andra vara. :)

Men kort:

  1. Du borde hämta alla sidor på en gång och lägga dem i en array, istället för att köra massor av SQL-frågor.
  2. Det finns ingen som helst anledning att konkatenera in siffror i en sträng så som du gör. Följande:
Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = " & 30 & " ")

borde se ut så här:

Set RS=connect.execute("SELECT * FROM hemsidor  WHERE sidan = 30)
  1. "Bildval"- och "meddelande"-fält borde ligga i en egen tabell och joinas in när du vill ha dem. Vad händer om du vill lägga till ytterligare ett meddelande? I dagsläget måste du förändra tabellens utseende, och det är inte bra.
  2. Access-drivern du använder är "gammal" - det är bättre om du ansluter med OLEDB.

Det var det. Just nu iaf. :)

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)