webForumDet fria alternativet

Seg databas

ASPur ASP

17 svar · 451 visningar · startad av asp

aspMedlem sedan aug. 2002733 inlägg
#1

Hej.

Min hemsida är väldigt seg. Jag undrar om det kan bero på databaskopplingen.

Ser ni något fel med denna koppling? Bör jag göra den på ett annat sätt?

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("XXX.mdb")

Set rs = objConn.Execute("SELECT * FROM Tabellen")

objConn.Close
Set objConn = Nothing

Sedan undrar jag det kan bero på att jag inkluderar 5-6 filer på sidan. Kan det sega ner sidan?

Sista fråga. Är det absolut nödvändigt att man avslutar databaskopplingen innan man skickar besökare vidare? Har kanske glömt det på vissa ställen.

Response.Redirect("asd.asp")
objConn.Close
Set objConn = Nothing

Mvh
Marcus

@ndersMedlem sedan juni 200032 969 inlägg
#2

Frågan har mer att göra med ASP, så jag flyttar tråden från SQL.

Mvh

voigtann1Medlem sedan juni 20019 519 inlägg
#3

asp skrev:

Min hemsida är väldigt seg. Jag undrar om det kan bero på databaskopplingen.

Fråga: Måste du använda alla "val" i tabellen Tabellen? Annars är det alltid en fördel att endast plockar ut de värden du presentera på sidan:

SELECT Fornamn,Efternamn FROM Tabellen

asp skrev:

Sedan undrar jag det kan bero på att jag inkluderar 5-6 filer på sidan. Kan det sega ner sidan?

Det kan det nog (beroende på hur de andra include sidorna är uppbyggt, och Include gör sidan lite segare(vad jag har hört)

asp skrev:

Sista fråga. Är det absolut nödvändigt att man avslutar databaskopplingen innan man skickar besökare vidare? Har kanske glömt det på vissa ställen.

Fungera det så gör det det... men detta segar nog sidan, stäng alltid objekt när dom inte används mer även innan den redirekta så tycker jag du ska ha stängt databaskopplingen, databasen kan bli "låst".

aspMedlem sedan aug. 2002733 inlägg
#4

Visst, det går snabbare att plocka ut enstaka fält ur tabellen. Men i de flesta fall använder jag alla fält. Dessutom borde det inte sega ner sidan såpass mycket som det gör.

Stänga databasen innan jag redirectar har jag gjort i de flesta fall. Skall man även stänga recordsetet man skapar?

Set rs = objConn.Execute(SQL)

...

'Stänga också?

Include filer, jag har också hört att det saktar ner sidorna. Men så länge man håller sig under ca 10 filer borde det inte vara några problem. Man bör ju liksom kunna använda funktionen include. :p

Tack för svaret och tacksam för fler svar.

(Ursäkta felpostningen)

emissionMedlem sedan dec. 19996 721 inlägg
#5

Include-filer är inget direkt problem i sig, såvida själva filerna inte gör något slitsamt.

Använd gärna en OLEDB-koppling i stället (http://www.connectionstrings.com).

aspMedlem sedan aug. 2002733 inlägg
#6

Jag hittar ingen OLEDB-koppling till vanliga ASP och inte ASP.NET. Hittar ni?

http://www.connectionstrings.com/?carrier=access

@ndersMedlem sedan juni 200032 969 inlägg
#7

Jodå. Titta under "OLE DB, OleDbConnection (.NET)", det är vanlig OLEDB som du kan använda i ASP, och även i OleDbConnection i .NET.

aspMedlem sedan aug. 2002733 inlägg
#8

Följande kod ger följande fel:

objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("DB.mdb") & ";"

error '80004005' 
/page/default.asp, line 44 

Set rs = objConn.Execute("SELECT * FROM Tabell")
@ndersMedlem sedan juni 200032 969 inlägg
#9

Databasen ligger i samma mapp som asp-filen, och tillräckliga rättigheter för IUSR_xxx är satta på mappen?

Vilken är alltså rad 44?

aspMedlem sedan aug. 2002733 inlägg
#10

Databasen ligger inte i samma mapp som asp-filen. Dock heter databasen annorlunda men jag skriver inte hela namnet här pga säkerhetsskäl. Jag har givit en korrekt sökväg iaf.

Rad 44 är SQL-satsen, kan skriva den igen:

Set rs = objConn.Execute("SELECT * FROM Tabell")

Det med IUSR_xxx har jag ingen aning om? Vad är det?

Denna funktion anväder jag nu, den fungerar, men seg som sagt:

objConn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../XXX.db")
@ndersMedlem sedan juni 200032 969 inlägg
#11

Om du ser till att du använder samma sökväg i access-drivern som i oledb-drivern ska det fungera.

Det med IUSR_xxx har jag ingen aning om?

IUSR_datornamn är det Windows-konto som används av IIS. Det kontot måste ha NTFS-rättigheter att läsa, skriva och skapa filer i mappen som databasen ligger i.

aspMedlem sedan aug. 2002733 inlägg
#12

Den klagar endast på vissa SQL-satser. Kopplingen fungerar iaf.

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error in UPDATE statement.
/lp/page/default.asp, line 36

	objConn.Execute("UPDATE Kommentarer SET read = 'True' WHERE IsNull(read) AND typ = 'MINA' AND referens = " & Session("USER"))

...och...

Error Type:
(0x80004005)
Unspecified error 
/lp/page/default.asp, line 40

Set rs = objConn.Execute("SELECT TOP 1 * FROM Kommentarer WHERE isNull(read) AND typ = 'MINA' AND referens = " & Session("USER"))

Jättekonstigt.

emissionMedlem sedan dec. 19996 721 inlägg
#13

Man skulle kunna misstänka att Session("USER") är tom.

Regel nummer 1 när man har dylika problem:
Skriv ut den färdiga SQL-satsen.

aspMedlem sedan aug. 2002733 inlägg
#14

Första jag gjorde och den var inte tom.

emissionMedlem sedan dec. 19996 721 inlägg
#15

Hur ser den färdiga sql-satsen ut?

@ndersMedlem sedan juni 200032 969 inlägg
#16

Det finns en del ord som är reserverade, som olika drivers reagerar olika på. Jag vill minnas att "read" är ett sådant ord. Prova att klamra ([read]) i dina SQL-frågor, för att se om det fungerar. Fungerar det då tycker jag att du ska byta namn på fältet.

aspMedlem sedan aug. 2002733 inlägg
#17

Jo man tackar, det var felet. Fick ändra på en hel del andra SQL satser. Men måste säga att sidan blev inte så mycket snabbare. Det enda jag kan komma på nu är att include-filerna drar ner sidan... =/

@ndersMedlem sedan juni 200032 969 inlägg
#18

Prova att göra en likadan sida utan include-filer. Prova att köra alla olika delar av sidan för sig själva, provkör alla enskilda SQL-frågor.

Ta tid med Timer() eller dylikt och skriv ut efter varje kodbit, så kanske du kan se vad det är som egentligen tar tid.

261 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
128 ms — hämta forumlista (db)
127 ms — hämta statistik (db)
131 ms — hämta tråd, inlägg och bilagor (db)