webForumDet fria alternativet

öppen databaskoppling?

3 svar · 167 visningar · startad av mozilla

mozillaMedlem sedan juli 20011 084 inlägg
#1

Jag bygger en sida och har lite funderingar om vilken metod som är bäst/snabbast/mins krävande osv. De är en sida, låt oss säga ett forum för enkelhetens skull? Där de då finns undersidor, valda med case satser för tex. läsa/skriva/spara osv. Hur är det bäst att ha db kopplingen. Har 3 alternativ under som ni ska få välja mellan?

[b]1.[/b]
Set Conn = ...
Conn.Open ...

Case "index"
Här hittar du alla inlägg....
rs.Open
'skriver ut allt

Case "annat"
rs.Open
'skriver ut de andra

'osv
End Select
Conn.Close

[b]2.[/b]
Set Conn = ...
Conn.Open ...

Case "index"
Här hittar du alla inlägg....
rs.Open
'skriver ut allt
Conn.Close

Case "annat"
rs.Open
'skriver ut de andra
Conn.Close

'osv
End Select

[b]3.[/b]
Case "index"
Set Conn = ...
Conn.Open ...
Här hittar du alla inlägg....
rs.Open
'skriver ut allt
Conn.Close

Case "annat"
Set Conn = ...
Conn.Open ...
rs.Open
'skriver ut de andra
Conn.Close

'osv
End Select

Det som skiljer är när man öppnar och stänger databaskopplingen? Är det bättre att stänga den så fort man använt de man behöver? Och göra det en gång i varje case. Eller kan den vara öppen genom hela case satsen och stängs bara en gång i slutet bara. Eller ska man bara öppnar precis där man behöver och stänger direkt efter man är klar. dvs öppna och stänga en gång i varje case sats.

PaceMedlem sedan juni 20019 024 inlägg
#2

Öppna databasen för när du behöver den, och stäng den så fort som möjligt. Hämta gärna med .Getrows() metoden på ditt recordset, alternativ frånkopplade recordset.

mozillaMedlem sedan juli 20011 084 inlägg
#3

okej, men om man nu behöver den på nästan alla sidor. fast de kanske bara är väldigt lite? Vilket av alternativen menar du på då? För om man öppnar och stänger i varje case sats så blir ju filen ganska stor om man har många undersidor?

PaceMedlem sedan juni 20019 024 inlägg
#4

mozilla skrev:

okej, men om man nu behöver den på nästan alla sidor. fast de kanske bara är väldigt lite? Vilket av alternativen menar du på då? För om man öppnar och stänger i varje case sats så blir ju filen ganska stor om man har många undersidor?

Inget av alternativet. Av den anledningen ska du dela upp din kod i moduler, så blir det inte så mycket kod som du tror. Exempel:

Sub Main()
	Select Case LCase(strAction)
		Case "index"
			arrIndex = GetRecords("SELECT field FROM table")
		Case "profile"
			arrProfile = GetRecords("SELECT other_field FROM table")
		Case "some_other_thingie"
			arrFoo = GetRecords("SELECT thingie FROM table")
		Case Else
			arrError = GetRecords("SELECT error FROM table")
			Response.Write arrError(0, 0)
	End Select
End Sub

Function GetRecords(SQL)
	Set Connection = CreateDBconn("DSN=greger")
	Set rs = Connection.Execute(SQL)
	If Not rs.BOF Or Not rs.EOF Then
		arrRecords = rs.Getrows()
	End If
	
	rs.Close
	Set rs = nothing
	Connection.Close
	Set Connection = nothing

	GetRecords = arrRecords	
End Function

Givetvis ska du också deklarera variablerna, vilket jag inte gjort här.

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